From 7cc4b94b55dd4c11e2ea020b6393128d525d84e9 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Fri, 26 Jun 2020 10:53:05 +0200 Subject: [PATCH] Can change group's logo --- src/constants.rs | 3 +++ src/controllers/groups_controller.rs | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/constants.rs b/src/constants.rs index c036e7a..29219f5 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -42,6 +42,9 @@ pub const DEFAULT_ACCOUNT_IMAGE: &str = "avatars/0Reverse.png"; /// The account image to show for users who are not allowed to access other users account images pub const ERROR_ACCOUNT_IMAGE: &str = "avatars/0Red.png"; +/// The path where groups logos should be stored +pub const PATH_GROUPS_LOGOS: &str = "groups_logo"; + /// The group logo to use when no custom logo have been uploaded pub const DEFAULT_GROUP_LOGO: &str = "groups_logo/default.png"; diff --git a/src/controllers/groups_controller.rs b/src/controllers/groups_controller.rs index 9cce24e..0a2656c 100644 --- a/src/controllers/groups_controller.rs +++ b/src/controllers/groups_controller.rs @@ -8,7 +8,7 @@ use crate::api_data::advanced_group_api::AdvancedGroupApi; use crate::api_data::group_api::GroupApi; use crate::api_data::res_change_group_logo::ResChangeGroupLogo; use crate::api_data::res_create_group::GroupCreationResult; -use crate::constants::DEFAULT_GROUP_LOGO; +use crate::constants::{DEFAULT_GROUP_LOGO, PATH_GROUPS_LOGOS}; use crate::controllers::routes::RequestResult; use crate::data::group::{Group, GroupAccessLevel, GroupPostsCreationLevel, GroupRegistrationLevel, GroupVisibilityLevel}; use crate::data::group_id::GroupID; @@ -123,8 +123,19 @@ pub fn check_virtual_dir(r: &mut HttpRequestHandler) -> RequestResult { /// Change a group's logo pub fn upload_logo(r: &mut HttpRequestHandler) -> RequestResult { - // TODO : implement this method - r.success("implement me") + let group_id = r.post_group_id_with_access("id", GroupAccessLevel::ADMIN_ACCESS)?; + + if !r.has_file("logo") { + r.bad_request("Did not receive logo!".to_string())?; + } + + groups_helper::delete_logo(&group_id)?; + + let logo_path = r.save_post_image("logo", PATH_GROUPS_LOGOS, 500, 500)?; + + groups_helper::set_logo_path(&group_id, Some(logo_path.clone()))?; + + r.set_response(ResChangeGroupLogo::new(&logo_path)) } /// Delete a group's logo