Adding some helper functions.
This commit is contained in:
parent
f81a7ad9ab
commit
5e5063cbdd
3 changed files with 30 additions and 41 deletions
|
@ -148,6 +148,10 @@ impl Post {
|
|||
.set(stickied.eq(new_stickied))
|
||||
.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 {
|
||||
|
|
|
@ -433,19 +433,7 @@ impl Perform for Oper<EditCommunity> {
|
|||
community: community_view,
|
||||
};
|
||||
|
||||
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: UserOperation::EditCommunity,
|
||||
response: res_sent,
|
||||
community_id: data.edit_id,
|
||||
my_id: ws.id,
|
||||
});
|
||||
}
|
||||
send_community_websocket(&res, websocket_info, UserOperation::EditCommunity);
|
||||
|
||||
Ok(res)
|
||||
}
|
||||
|
@ -515,19 +503,7 @@ impl Perform for Oper<DeleteCommunity> {
|
|||
community: community_view,
|
||||
};
|
||||
|
||||
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: UserOperation::DeleteCommunity,
|
||||
response: res_sent,
|
||||
community_id: data.edit_id,
|
||||
my_id: ws.id,
|
||||
});
|
||||
}
|
||||
send_community_websocket(&res, websocket_info, UserOperation::DeleteCommunity);
|
||||
|
||||
Ok(res)
|
||||
}
|
||||
|
@ -613,19 +589,7 @@ impl Perform for Oper<RemoveCommunity> {
|
|||
community: community_view,
|
||||
};
|
||||
|
||||
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: UserOperation::RemoveCommunity,
|
||||
response: res_sent,
|
||||
community_id: data.edit_id,
|
||||
my_id: ws.id,
|
||||
});
|
||||
}
|
||||
send_community_websocket(&res, websocket_info, UserOperation::RemoveCommunity);
|
||||
|
||||
Ok(res)
|
||||
}
|
||||
|
@ -831,6 +795,7 @@ impl Perform for Oper<BanFromCommunity> {
|
|||
}
|
||||
|
||||
// Mod tables
|
||||
// TODO eventually do correct expires
|
||||
let expires = match data.expires {
|
||||
Some(time) => Some(naive_from_unix(time)),
|
||||
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,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -589,7 +589,7 @@ impl Perform for Oper<EditPost> {
|
|||
}
|
||||
|
||||
// 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());
|
||||
}
|
||||
|
||||
|
@ -692,7 +692,7 @@ impl Perform for Oper<DeletePost> {
|
|||
}
|
||||
|
||||
// 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());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue