Adding some helper functions.

This commit is contained in:
Dessalines 2020-07-21 13:52:57 -04:00
parent f81a7ad9ab
commit 5e5063cbdd
3 changed files with 30 additions and 41 deletions

View file

@ -148,6 +148,10 @@ impl Post {
.set(stickied.eq(new_stickied)) .set(stickied.eq(new_stickied))
.get_result::<Self>(conn) .get_result::<Self>(conn)
} }
pub fn is_post_creator(user_id: i32, post_creator_id: i32) -> bool {
user_id == post_creator_id
}
} }
impl Crud<PostForm> for Post { impl Crud<PostForm> for Post {

View file

@ -433,19 +433,7 @@ impl Perform for Oper<EditCommunity> {
community: community_view, community: community_view,
}; };
if let Some(ws) = websocket_info { send_community_websocket(&res, websocket_info, UserOperation::EditCommunity);
// Strip out the user id and subscribed when sending to others
let mut res_sent = res.clone();
res_sent.community.user_id = None;
res_sent.community.subscribed = None;
ws.chatserver.do_send(SendCommunityRoomMessage {
op: UserOperation::EditCommunity,
response: res_sent,
community_id: data.edit_id,
my_id: ws.id,
});
}
Ok(res) Ok(res)
} }
@ -515,19 +503,7 @@ impl Perform for Oper<DeleteCommunity> {
community: community_view, community: community_view,
}; };
if let Some(ws) = websocket_info { send_community_websocket(&res, websocket_info, UserOperation::DeleteCommunity);
// Strip out the user id and subscribed when sending to others
let mut res_sent = res.clone();
res_sent.community.user_id = None;
res_sent.community.subscribed = None;
ws.chatserver.do_send(SendCommunityRoomMessage {
op: UserOperation::DeleteCommunity,
response: res_sent,
community_id: data.edit_id,
my_id: ws.id,
});
}
Ok(res) Ok(res)
} }
@ -613,19 +589,7 @@ impl Perform for Oper<RemoveCommunity> {
community: community_view, community: community_view,
}; };
if let Some(ws) = websocket_info { send_community_websocket(&res, websocket_info, UserOperation::RemoveCommunity);
// Strip out the user id and subscribed when sending to others
let mut res_sent = res.clone();
res_sent.community.user_id = None;
res_sent.community.subscribed = None;
ws.chatserver.do_send(SendCommunityRoomMessage {
op: UserOperation::RemoveCommunity,
response: res_sent,
community_id: data.edit_id,
my_id: ws.id,
});
}
Ok(res) Ok(res)
} }
@ -831,6 +795,7 @@ impl Perform for Oper<BanFromCommunity> {
} }
// Mod tables // Mod tables
// TODO eventually do correct expires
let expires = match data.expires { let expires = match data.expires {
Some(time) => Some(naive_from_unix(time)), Some(time) => Some(naive_from_unix(time)),
None => None, None => None,
@ -1055,3 +1020,23 @@ impl Perform for Oper<TransferCommunity> {
}) })
} }
} }
pub fn send_community_websocket(
res: &CommunityResponse,
websocket_info: Option<WebsocketInfo>,
op: UserOperation,
) {
if let Some(ws) = websocket_info {
// Strip out the user id and subscribed when sending to others
let mut res_sent = res.clone();
res_sent.community.user_id = None;
res_sent.community.subscribed = None;
ws.chatserver.do_send(SendCommunityRoomMessage {
op,
response: res_sent,
community_id: res.community.id,
my_id: ws.id,
});
}
}

View file

@ -589,7 +589,7 @@ impl Perform for Oper<EditPost> {
} }
// Verify that only the creator can edit // Verify that only the creator can edit
if user_id != orig_post.creator_id { if !Post::is_post_creator(user_id, orig_post.creator_id) {
return Err(APIError::err("no_post_edit_allowed").into()); return Err(APIError::err("no_post_edit_allowed").into());
} }
@ -692,7 +692,7 @@ impl Perform for Oper<DeletePost> {
} }
// Verify that only the creator can delete // Verify that only the creator can delete
if user_id != orig_post.creator_id { if !Post::is_post_creator(user_id, orig_post.creator_id) {
return Err(APIError::err("no_post_edit_allowed").into()); return Err(APIError::err("no_post_edit_allowed").into());
} }