Skip to main content

autopulse_service/settings/
auth.rs

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