autopulse_service/settings/
auth.rs

1use base64::prelude::*;
2use serde::{Deserialize, Serialize};
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(Serialize, Deserialize, Clone, Debug)]
20pub struct Auth {
21    /// Whether authentication is enabled (default: true)
22    #[serde(default = "default_enabled")]
23    #[serde(skip_serializing)]
24    pub enabled: bool,
25    /// Username for basic auth (default: admin)
26    #[serde(default = "default_username")]
27    pub username: String,
28    /// Password for basic auth (default: password)
29    #[serde(default = "default_password")]
30    pub password: String,
31}
32
33impl Default for Auth {
34    fn default() -> Self {
35        Self {
36            enabled: default_enabled(),
37            username: default_username(),
38            password: default_password(),
39        }
40    }
41}
42
43impl Auth {
44    pub fn to_auth_encoded(&self) -> String {
45        format!(
46            "Basic {}",
47            BASE64_STANDARD.encode(format!("{}:{}", self.username, self.password))
48        )
49    }
50}