torrust_index_backend/services/
settings.rs1use std::sync::Arc;
3
4use super::user::DbUserRepository;
5use crate::config::{Configuration, ConfigurationPublic, TorrustBackend};
6use crate::errors::ServiceError;
7use crate::models::user::UserId;
8
9pub struct Service {
10 configuration: Arc<Configuration>,
11 user_repository: Arc<DbUserRepository>,
12}
13
14impl Service {
15 #[must_use]
16 pub fn new(configuration: Arc<Configuration>, user_repository: Arc<DbUserRepository>) -> Service {
17 Service {
18 configuration,
19 user_repository,
20 }
21 }
22
23 pub async fn get_all(&self, user_id: &UserId) -> Result<TorrustBackend, ServiceError> {
29 let user = self.user_repository.get_compact(user_id).await?;
30
31 if !user.administrator {
34 return Err(ServiceError::Unauthorized);
35 }
36
37 Ok(self.configuration.get_all().await)
38 }
39
40 pub async fn get_public(&self) -> ConfigurationPublic {
46 self.configuration.get_public().await
47 }
48
49 pub async fn get_site_name(&self) -> String {
55 self.configuration.get_site_name().await
56 }
57}