feat: implement authentication module with JWT support and user management
This commit is contained in:
51
apps/api/src/configs/auth.rs
Normal file
51
apps/api/src/configs/auth.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use config::{Config, ConfigError};
|
||||
use tracing::warn;
|
||||
|
||||
use crate::configs::key::{
|
||||
AUTH_DEFAULT_ADMIN_PASSWORD_KEY, AUTH_DEFAULT_ADMIN_USERNAME_KEY, AUTH_JWT_SECRET_KEY,
|
||||
};
|
||||
|
||||
use super::FromConfig;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AuthSettings {
|
||||
pub jwt_secret: Option<String>,
|
||||
pub default_admin_username: Option<String>,
|
||||
pub default_admin_password: Option<String>,
|
||||
}
|
||||
|
||||
impl FromConfig for AuthSettings {
|
||||
fn from_config(_config: &Config) -> Result<Self, String> {
|
||||
Ok(AuthSettings {
|
||||
jwt_secret: _config
|
||||
.get_string(AUTH_JWT_SECRET_KEY)
|
||||
.inspect_err(|err| {
|
||||
match err {
|
||||
ConfigError::NotFound(_) => {
|
||||
warn!(
|
||||
"{} not found in configuration, A random secret will be generated at runtime.",
|
||||
AUTH_JWT_SECRET_KEY
|
||||
);
|
||||
}
|
||||
_ => {
|
||||
warn!(
|
||||
"Failed to read {} from configuration, A random secret will be generated at runtime: {}",
|
||||
AUTH_JWT_SECRET_KEY, err
|
||||
);
|
||||
}
|
||||
};
|
||||
})
|
||||
.ok(),
|
||||
default_admin_username: _config
|
||||
.get_string(AUTH_DEFAULT_ADMIN_USERNAME_KEY)
|
||||
.ok(),
|
||||
default_admin_password: _config
|
||||
.get_string(AUTH_DEFAULT_ADMIN_PASSWORD_KEY)
|
||||
.ok(),
|
||||
})
|
||||
}
|
||||
|
||||
fn validate(&self) -> Result<(), String> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user