//! # Server configuration //! //! @author Pierre Hubert use serde::Serialize; use crate::constants::{conservation_policy, password_policy}; #[derive(Serialize)] struct PasswordPolicy { allow_email_in_password: bool, allow_name_in_password: bool, min_password_length: u64, min_number_upper_case_letters: u64, min_number_lower_case_letters: u64, min_number_digits: u64, min_number_special_characters: u64, min_categories_presence: u64, } #[derive(Serialize)] struct DataConservationPolicy { min_inactive_account_lifetime: u64, min_notification_lifetime: u64, min_comments_lifetime: u64, min_posts_lifetime: u64, min_conversation_messages_lifetime: u64, min_likes_lifetime: u64, } #[derive(Serialize)] pub struct ServerConfig { password_policy: PasswordPolicy, data_conservation_policy: DataConservationPolicy, } impl ServerConfig { pub fn new() -> Self { ServerConfig { password_policy: PasswordPolicy { allow_email_in_password: password_policy::ALLOW_EMAIL_IN_PASSWORD, allow_name_in_password: password_policy::ALLOW_NAME_IN_PASSWORD, min_password_length: password_policy::MIN_PASSWORD_LENGTH, min_number_upper_case_letters: password_policy::MIN_NUMBER_UPPERCASE_LETTER, min_number_lower_case_letters: password_policy::MIN_NUMBER_LOWERCASE_LETTER, min_number_digits: password_policy::MIN_NUMBER_DIGITS, min_number_special_characters: password_policy::MIN_NUMBER_SPECIAL_CHARACTERS, min_categories_presence: password_policy::MIN_CATEGORIES_PRESENCE, }, data_conservation_policy: DataConservationPolicy { min_inactive_account_lifetime: conservation_policy::MIN_INACTIVE_ACCOUNT_LIFETIME.as_secs(), min_notification_lifetime: conservation_policy::MIN_NOTIFICATIONS_LIFETIME.as_secs(), min_comments_lifetime: conservation_policy::MIN_COMMENTS_LIFETIME.as_secs(), min_posts_lifetime: conservation_policy::MIN_POSTS_LIFETIME.as_secs(), min_conversation_messages_lifetime: conservation_policy::MIN_CONVERSATION_MESSAGES_LIFETIME.as_secs(), min_likes_lifetime: conservation_policy::MIN_LIKES_LIFETIME.as_secs(), }, } } }