actix-surreal/src/model/user.rs
2024-07-24 13:22:50 +02:00

57 lines
1.5 KiB
Rust

// use framework::db::RecordId;
use serde::{Deserialize, Serialize};
use framework::auth::OAuthUser;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimpleUser {
pub oidc_id: String,
pub username: String,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub email: Option<String>,
pub superuser: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub oidc_id: String,
pub username: String,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub email: Option<String>,
pub superuser: bool,
pub roles: Vec<String>,
}
impl From<OAuthUser> for User {
fn from(value: OAuthUser) -> Self {
crate::model::User {
oidc_id: value.oidc_id,
username: value.username,
first_name: value.first_name,
last_name: value.last_name,
email: value.email,
superuser: value.superuser,
roles: Vec::new(),
}
}
}
impl User {
pub fn metadata_eq(&self, value: &User) -> bool {
self.oidc_id == value.oidc_id
&& self.username == value.username
&& self.first_name == value.first_name
&& self.last_name == value.last_name
&& self.email == value.email
}
pub fn metadata_from(&mut self, value: User) {
self.oidc_id = value.oidc_id;
self.username = value.username;
self.first_name = value.first_name;
self.last_name = value.last_name;
self.email = value.email;
}
}