From 8d1db3c39542e6c76a82f9d6119e89fdcfd6e845 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Thu, 29 Aug 2019 15:18:50 -0700 Subject: Allow admins to add mods and transfer communities - Fixes #238 --- server/src/api/community.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'server/src/api/community.rs') diff --git a/server/src/api/community.rs b/server/src/api/community.rs index 37bc20db..a278aa14 100644 --- a/server/src/api/community.rs +++ b/server/src/api/community.rs @@ -605,8 +605,15 @@ impl Perform for Oper { let read_community = Community::read(&conn, data.community_id)?; - // Make sure user is the creator - if read_community.creator_id != user_id { + let site_creator_id = Site::read(&conn, 1)?.creator_id; + let mut admins = UserView::admins(&conn)?; + let creator_index = admins.iter().position(|r| r.id == site_creator_id).unwrap(); + let creator_user = admins.remove(creator_index); + admins.insert(0, creator_user); + + + // Make sure user is the creator, or an admin + if user_id != read_community.creator_id && !admins.iter().map(|a| a.id).collect::>().contains(&user_id) { return Err(APIError::err(&self.op, "not_an_admin"))? } @@ -675,11 +682,6 @@ impl Perform for Oper { } }; - let site_creator_id = Site::read(&conn, 1)?.creator_id; - let mut admins = UserView::admins(&conn)?; - let creator_index = admins.iter().position(|r| r.id == site_creator_id).unwrap(); - let creator_user = admins.remove(creator_index); - admins.insert(0, creator_user); // Return the jwt Ok( -- cgit v1.2.3