From ef7248718247d45f334ff57d383c62fd17cbea7a Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 20 Aug 2024 01:05:18 +0200 Subject: [PATCH] feat: added authorization logic to the get_site method --- src/services/authorization.rs | 4 ++++ src/services/settings.rs | 8 ++++++-- src/web/api/server/v1/contexts/settings/handlers.rs | 12 ++++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/services/authorization.rs b/src/services/authorization.rs index dcca38f8..2861ddd9 100644 --- a/src/services/authorization.rs +++ b/src/services/authorization.rs @@ -40,6 +40,7 @@ pub enum ACTION { GetSettings, GetSettingsSecret, GetPublicSettings, + GetSiteName, AddTag, DeleteTag, GetTags, @@ -236,6 +237,7 @@ impl Default for CasbinConfiguration { admin, GetSettings admin, GetSettingsSecret admin, GetPublicSettings + admin, GetSiteName admin, AddTag admin, DeleteTag admin, GetTags @@ -252,6 +254,7 @@ impl Default for CasbinConfiguration { registered, GetCategories registered, GetImageByUrl registered, GetPublicSettings + registered, GetSiteName registered, GetTags registered, AddTorrent registered, GetTorrent @@ -263,6 +266,7 @@ impl Default for CasbinConfiguration { guest, GetLicensePage guest, GetCategories guest, GetPublicSettings + guest, GetSiteName guest, GetTags guest, GetTorrent guest, GetTorrentInfo diff --git a/src/services/settings.rs b/src/services/settings.rs index 7578775d..2b49dff3 100644 --- a/src/services/settings.rs +++ b/src/services/settings.rs @@ -76,8 +76,12 @@ impl Service { /// # Errors /// /// It returns an error if the user does not have the required permissions. - pub async fn get_site_name(&self) -> String { - self.configuration.get_site_name().await + pub async fn get_site_name(&self, maybe_user_id: Option) -> Result { + self.authorization_service + .authorize(ACTION::GetSiteName, maybe_user_id) + .await?; + + Ok(self.configuration.get_site_name().await) } } diff --git a/src/web/api/server/v1/contexts/settings/handlers.rs b/src/web/api/server/v1/contexts/settings/handlers.rs index 45ff79f8..b6b729e5 100644 --- a/src/web/api/server/v1/contexts/settings/handlers.rs +++ b/src/web/api/server/v1/contexts/settings/handlers.rs @@ -42,8 +42,12 @@ pub async fn get_public_handler( /// Get website name. #[allow(clippy::unused_async)] -pub async fn get_site_name_handler(State(app_data): State>) -> Response { - let site_name = app_data.settings_service.get_site_name().await; - - Json(responses::OkResponseData { data: site_name }).into_response() +pub async fn get_site_name_handler( + State(app_data): State>, + ExtractOptionalLoggedInUser(maybe_user_id): ExtractOptionalLoggedInUser, +) -> Response { + match app_data.settings_service.get_site_name(maybe_user_id).await { + Ok(site_name) => Json(responses::OkResponseData { data: site_name }).into_response(), + Err(error) => error.into_response(), + } }