Split up models
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
68
src/models/users.rs
Normal file
68
src/models/users.rs
Normal file
@@ -0,0 +1,68 @@
|
||||
use non_empty_string::NonEmptyString;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
ops::{Deref, DerefMut},
|
||||
};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct User {
|
||||
pub displayname: NonEmptyString,
|
||||
pub email: Option<String>,
|
||||
pub password: NonEmptyString,
|
||||
pub disabled: bool,
|
||||
pub groups: Vec<NonEmptyString>,
|
||||
|
||||
#[serde(flatten)]
|
||||
pub extra: Option<HashMap<NonEmptyString, Value>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Users {
|
||||
pub users: HashMap<NonEmptyString, User>,
|
||||
|
||||
#[serde(flatten)]
|
||||
pub extra: Option<HashMap<NonEmptyString, Value>>,
|
||||
}
|
||||
|
||||
impl Deref for Users {
|
||||
type Target = HashMap<NonEmptyString, User>;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.users
|
||||
}
|
||||
}
|
||||
|
||||
impl DerefMut for Users {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.users
|
||||
}
|
||||
}
|
||||
|
||||
impl From<super::authelia::UserFile> for User {
|
||||
fn from(user_file: super::authelia::UserFile) -> Self {
|
||||
Self {
|
||||
displayname: user_file.displayname,
|
||||
email: user_file.email,
|
||||
password: user_file.password,
|
||||
disabled: user_file.disabled.unwrap_or(false),
|
||||
groups: user_file.groups.unwrap_or_default(),
|
||||
extra: user_file.extra,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<super::authelia::UsersFile> for Users {
|
||||
fn from(users_file: super::authelia::UsersFile) -> Self {
|
||||
Self {
|
||||
users: users_file
|
||||
.users
|
||||
.into_iter()
|
||||
.map(|(key, user)| (key, User::from(user)))
|
||||
.collect(),
|
||||
extra: users_file.extra,
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user