autopulse_service/settings/
auth.rs

1use base64::prelude::*;
2use serde::Deserialize;
3
4#[doc(hidden)]
5fn default_username() -> String {
6    "admin".to_string()
7}
8
9#[doc(hidden)]
10fn default_password() -> String {
11    "password".to_string()
12}
13
14#[doc(hidden)]
15const fn default_enabled() -> bool {
16    true
17}
18
19#[derive(Deserialize, Clone, Debug)]
20pub struct Auth {
21    /// Whether authentication is enabled (default: true)
22    #[serde(default = "default_enabled")]
23    pub enabled: bool,
24    /// Username for basic auth (default: admin)
25    #[serde(default = "default_username")]
26    pub username: String,
27    /// Password for basic auth (default: password)
28    #[serde(default = "default_password")]
29    pub password: String,
30}
31
32impl Default for Auth {
33    fn default() -> Self {
34        Self {
35            enabled: default_enabled(),
36            username: default_username(),
37            password: default_password(),
38        }
39    }
40}
41
42impl Auth {
43    pub fn to_auth_encoded(&self) -> String {
44        format!(
45            "Basic {}",
46            BASE64_STANDARD.encode(format!("{}:{}", self.username, self.password))
47        )
48    }
49}