//! Project constants //! //! This module contains all the hard-coded value that might be used everywhere in the project. //! //! @author Pierre Hubert use std::time::Duration; /// The name of the tables pub mod database_tables_names { /// API services tokens table pub const CLIENTS_TABLE: &str = "comunic_clients"; /// User access tokens table pub const USER_ACCESS_TOKENS_TABLE: &str = "comunic_user_access_tokens"; /// User table pub const USERS_TABLE: &str = "utilisateurs"; /// Friends table pub const FRIENDS_TABLE: &str = "amis"; /// Custom emojis table pub const EMOJIS_TABLE: &str = "comunic_custom_emojis"; /// Likes table pub const LIKES_TABLE: &str = "aime"; /// Groups list table pub const GROUPS_LIST_TABLE: &str = "comunic_groups"; /// Groups members table pub const GROUPS_MEMBERS_TABLE: &str = "comunic_groups_members"; /// Conversations tables pub const CONV_LIST_TABLE: &str = "comunic_conversations_list"; pub const CONV_USERS_TABLE: &str = "comunic_conversations_users"; pub const CONV_MESSAGES_TABLE: &str = "comunic_conversations_messages"; /// Posts table pub const POSTS_TABLE: &str = "texte"; /// Movies table pub const MOVIES_TABLE: &str = "galerie_video"; /// Survey info table pub const SURVEY_INFO_TABLE: &str = "sondage"; /// Survey choices table pub const SURVEY_CHOICES_TABLE: &str = "sondage_choix"; /// Survey responses table pub const SURVEY_RESPONSE_TABLE: &str = "sondage_reponse"; /// Comments table pub const COMMENTS_TABLE: &str = "commentaires"; /// Notifications table pub const NOTIFICATIONS_TABLE: &str = "comunic_notifications"; } /// Password policy pub mod password_policy { /// Allow email in password ? pub const ALLOW_EMAIL_IN_PASSWORD: bool = false; /// Allow user name in password ? pub const ALLOW_NAME_IN_PASSWORD: bool = false; /// Minimal length of password pub const MIN_PASSWORD_LENGTH: u64 = 8; /// Password composition policy pub const MIN_NUMBER_LOWERCASE_LETTER: u64 = 1; pub const MIN_NUMBER_UPPERCASE_LETTER: u64 = 1; pub const MIN_NUMBER_DIGITS: u64 = 1; pub const MIN_NUMBER_SPECIAL_CHARACTERS: u64 = 1; pub const MIN_CATEGORIES_PRESENCE: u64 = 2; } /// Minimal conversation policy pub mod conservation_policy { use std::time::Duration; /// Minimum lifetime for inactive account (3 months) pub const MIN_INACTIVE_ACCOUNT_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30 * 3); /// Minimum lifetime for notifications (7 days) pub const MIN_NOTIFICATIONS_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 7); /// Minimum lifetime for comments (1 month) pub const MIN_COMMENTS_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30); /// Minimum lifetime for posts (1 month) pub const MIN_POSTS_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30); /// Minimum conversation messages lifetime (15 days) pub const MIN_CONVERSATION_MESSAGES_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 15); /// Minimum likes lifetime (1 month) pub const MIN_LIKES_LIFETIME: Duration = Duration::from_secs(60 * 60 * 24 * 30); } /// WebSocket access token lifetime, in seconds pub const WS_ACCESS_TOKEN_LIFETIME: u64 = 10; /// WebSocket access token length pub const WS_ACCESS_TOKEN_LENGTH: usize = 10; /// Lifetime of limit counter (1 hour) pub const LIMIT_COUNTER_LIFETIME: u64 = 60 * 60; /// The account image to show for user who do not have any 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"; /// The path where image associated with posts should be stored pub const PATH_POST_IMAGES: &str = "imgpost"; /// The path were PDF included with posts should be stored pub const PATH_POST_PDF: &str = "post_pdf"; /// The page where comments images are stored pub const PATH_COMMENTS_IMAGES: &str = "imgcommentaire"; /// Maximum requests size (50 Mo) pub const MAX_REQUEST_SIZE: usize = 50000000; /// Maximum number of choices per survey pub const MAXIMUM_NUMBER_SURVEY_CHOICES: usize = 20; /// Length of password reset token pub const PASSWORD_RESET_TOKEN_LENGTH: usize = 255; /// Duration of the validity of a password reset token (6 hours) pub const PASSWORD_RESET_TOKEN_LIFETIME: u64 = 60 * 60 * 6; /// Minimum password length pub const PASSWORD_MIN_LENGTH: usize = 3; /// Supported languages (for ComunicWeb) pub const SUPPORTED_LANGUAGES: &'static [&'static str] = &["en", "fr"]; /// Interval at which last active time of user should be recorded pub const USER_LAST_ACTIVITY_REFRESH: Duration = Duration::from_secs(60); /// Interval at which last activity of an access token should be recorded pub const USER_ACCESS_TOKEN_ACTIVITY_REFRESH: Duration = Duration::from_secs(60 * 60); /// Sleep time before initial clean up execution pub const INITIAL_REFRESH_LOAD_INTERVAL: Duration = Duration::from_secs(5); /// Interval between each cleanup operation (every hour) pub const CLEAN_UP_INTERVAL: Duration = Duration::from_secs(60 * 60);