model: move User and Group definition to backend

This commit is contained in:
Valentin Tolmer 2021-08-31 16:20:15 +02:00 committed by nitnelave
parent 641018ff56
commit 9dd579e32e
3 changed files with 39 additions and 40 deletions

View File

@ -67,37 +67,6 @@ pub mod registration {
}
}
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)]
#[cfg_attr(not(target_arch = "wasm32"), derive(sqlx::FromRow))]
pub struct User {
pub user_id: String,
pub email: String,
pub display_name: Option<String>,
pub first_name: Option<String>,
pub last_name: Option<String>,
// pub avatar: ?,
pub creation_date: chrono::DateTime<chrono::Utc>,
}
impl Default for User {
fn default() -> Self {
User {
user_id: String::new(),
email: String::new(),
display_name: None,
first_name: None,
last_name: None,
creation_date: Utc.timestamp(0, 0),
}
}
}
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)]
pub struct Group {
pub display_name: String,
pub users: Vec<String>,
}
#[derive(Clone, Serialize, Deserialize)]
pub struct JWTClaims {
pub exp: DateTime<Utc>,

View File

@ -3,7 +3,37 @@ use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use std::collections::HashSet;
pub use lldap_model::{Group, User};
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)]
#[cfg_attr(not(target_arch = "wasm32"), derive(sqlx::FromRow))]
pub struct User {
pub user_id: String,
pub email: String,
pub display_name: Option<String>,
pub first_name: Option<String>,
pub last_name: Option<String>,
// pub avatar: ?,
pub creation_date: chrono::DateTime<chrono::Utc>,
}
impl Default for User {
fn default() -> Self {
use chrono::TimeZone;
User {
user_id: String::new(),
email: String::new(),
display_name: None,
first_name: None,
last_name: None,
creation_date: chrono::Utc.timestamp(0, 0),
}
}
}
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)]
pub struct Group {
pub display_name: String,
pub users: Vec<String>,
}
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Clone)]
pub struct BindRequest {

View File

@ -4,6 +4,7 @@ use serde::{Deserialize, Serialize};
use std::convert::TryInto;
type DomainRequestFilter = crate::domain::handler::RequestFilter;
type DomainUser = crate::domain::handler::User;
use super::api::Context;
#[derive(PartialEq, Eq, Debug, GraphQLInputObject)]
@ -117,14 +118,14 @@ impl<Handler: BackendHandler + Sync> Query<Handler> {
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)]
/// Represents a single user.
pub struct User<Handler: BackendHandler> {
user: lldap_model::User,
user: DomainUser,
_phantom: std::marker::PhantomData<Box<Handler>>,
}
impl<Handler: BackendHandler> Default for User<Handler> {
fn default() -> Self {
Self {
user: lldap_model::User::default(),
user: DomainUser::default(),
_phantom: std::marker::PhantomData,
}
}
@ -166,8 +167,8 @@ impl<Handler: BackendHandler + Sync> User<Handler> {
}
}
impl<Handler: BackendHandler> From<lldap_model::User> for User<Handler> {
fn from(user: lldap_model::User) -> Self {
impl<Handler: BackendHandler> From<DomainUser> for User<Handler> {
fn from(user: DomainUser) -> Self {
Self {
user,
_phantom: std::marker::PhantomData,
@ -243,7 +244,7 @@ mod tests {
mock.expect_get_user_details()
.with(eq("bob"))
.return_once(|_| {
Ok(lldap_model::User {
Ok(DomainUser {
user_id: "bob".to_string(),
email: "bob@bobbers.on".to_string(),
..Default::default()
@ -298,7 +299,6 @@ mod tests {
let mut mock = MockTestBackendHandler::new();
use crate::domain::handler::RequestFilter;
use lldap_model::User;
mock.expect_list_users()
.with(eq(Some(RequestFilter::Or(vec![
RequestFilter::Equality("id".to_string(), "bob".to_string()),
@ -306,12 +306,12 @@ mod tests {
]))))
.return_once(|_| {
Ok(vec![
User {
DomainUser {
user_id: "bob".to_string(),
email: "bob@bobbers.on".to_string(),
..Default::default()
},
User {
DomainUser {
user_id: "robert".to_string(),
email: "robert@bobbers.on".to_string(),
..Default::default()