From 5e5063cbddaedd53c6573c17a9f320096ce35d60 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 21 Jul 2020 13:52:57 -0400 Subject: [PATCH] Adding some helper functions. --- server/lemmy_db/src/post.rs | 4 +++ server/src/api/community.rs | 63 ++++++++++++++----------------------- server/src/api/post.rs | 4 +-- 3 files changed, 30 insertions(+), 41 deletions(-) diff --git a/server/lemmy_db/src/post.rs b/server/lemmy_db/src/post.rs index 35b0feada..d46677897 100644 --- a/server/lemmy_db/src/post.rs +++ b/server/lemmy_db/src/post.rs @@ -148,6 +148,10 @@ impl Post { .set(stickied.eq(new_stickied)) .get_result::(conn) } + + pub fn is_post_creator(user_id: i32, post_creator_id: i32) -> bool { + user_id == post_creator_id + } } impl Crud for Post { diff --git a/server/src/api/community.rs b/server/src/api/community.rs index f4ba15fb3..1ae7036f2 100644 --- a/server/src/api/community.rs +++ b/server/src/api/community.rs @@ -433,19 +433,7 @@ impl Perform for Oper { 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 { 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 { 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 { } // 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 { }) } } + +pub fn send_community_websocket( + res: &CommunityResponse, + websocket_info: Option, + 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, + }); + } +} diff --git a/server/src/api/post.rs b/server/src/api/post.rs index 15c38a3f6..70f46b2a2 100644 --- a/server/src/api/post.rs +++ b/server/src/api/post.rs @@ -589,7 +589,7 @@ impl Perform for Oper { } // 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 { } // 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()); }