mirror of
https://github.com/lldap/lldap.git
synced 2026-04-05 14:48:10 +00:00
domain-model: move domain::model module to separate crate
This commit is contained in:
committed by
nitnelave
parent
3c0359eb8a
commit
d854ace89f
20
Cargo.lock
generated
20
Cargo.lock
generated
@@ -2536,6 +2536,7 @@ dependencies = [
|
||||
"lettre",
|
||||
"lldap_auth",
|
||||
"lldap_domain",
|
||||
"lldap_domain_model",
|
||||
"lldap_validation",
|
||||
"log",
|
||||
"mockall",
|
||||
@@ -2644,6 +2645,25 @@ dependencies = [
|
||||
"uuid 1.11.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lldap_domain_model"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"base64 0.21.7",
|
||||
"bincode",
|
||||
"chrono",
|
||||
"derive_more 1.0.0",
|
||||
"lldap_auth",
|
||||
"lldap_domain",
|
||||
"orion",
|
||||
"pretty_assertions",
|
||||
"sea-orm",
|
||||
"serde",
|
||||
"serde_bytes",
|
||||
"thiserror",
|
||||
"uuid 1.11.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lldap_migration_tool"
|
||||
version = "0.4.2"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
members = [
|
||||
"crates/auth",
|
||||
"crates/domain",
|
||||
"crates/domain-model",
|
||||
"crates/validation",
|
||||
"server",
|
||||
"app",
|
||||
|
||||
50
crates/domain-model/Cargo.toml
Normal file
50
crates/domain-model/Cargo.toml
Normal file
@@ -0,0 +1,50 @@
|
||||
[package]
|
||||
authors = ["Valentin Tolmer <valentin@tolmer.fr>"]
|
||||
name = "lldap_domain_model"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
test = []
|
||||
|
||||
[dependencies]
|
||||
base64 = "0.21"
|
||||
bincode = "1.3"
|
||||
orion = "0.17"
|
||||
serde = "1"
|
||||
serde_bytes = "0.11"
|
||||
thiserror = "1"
|
||||
|
||||
[dev-dependencies]
|
||||
pretty_assertions = "1"
|
||||
|
||||
[dependencies.chrono]
|
||||
features = ["serde"]
|
||||
version = "0.4"
|
||||
|
||||
[dependencies.derive_more]
|
||||
features = ["debug", "display", "from", "from_str"]
|
||||
default-features = false
|
||||
version = "1"
|
||||
|
||||
[dependencies.lldap_auth]
|
||||
path = "../auth"
|
||||
features = ["opaque_server", "opaque_client", "sea_orm"]
|
||||
|
||||
[dependencies.lldap_domain]
|
||||
path = "../domain"
|
||||
|
||||
[dependencies.sea-orm]
|
||||
version = "0.12"
|
||||
default-features = false
|
||||
features = [
|
||||
"macros",
|
||||
"with-chrono",
|
||||
"with-uuid",
|
||||
"sqlx-all",
|
||||
"runtime-actix-rustls",
|
||||
]
|
||||
|
||||
[dependencies.uuid]
|
||||
features = ["v1", "v3"]
|
||||
version = "1"
|
||||
2
crates/domain-model/src/lib.rs
Normal file
2
crates/domain-model/src/lib.rs
Normal file
@@ -0,0 +1,2 @@
|
||||
pub mod error;
|
||||
pub mod model;
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::domain::error::DomainError;
|
||||
use crate::error::DomainError;
|
||||
use lldap_domain::{
|
||||
schema::AttributeList,
|
||||
types::{Attribute, AttributeName, AttributeType, AttributeValue, Cardinality, Serialized},
|
||||
@@ -6,7 +6,7 @@ use lldap_domain::{
|
||||
|
||||
// Value must be a serialized attribute value of the type denoted by typ,
|
||||
// and either a singleton or unbounded list, depending on is_list.
|
||||
pub(crate) fn deserialize_attribute_value(
|
||||
pub fn deserialize_attribute_value(
|
||||
value: &Serialized,
|
||||
typ: AttributeType,
|
||||
is_list: bool,
|
||||
@@ -39,7 +39,7 @@ pub(crate) fn deserialize_attribute_value(
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn deserialize_attribute(
|
||||
pub fn deserialize_attribute(
|
||||
name: AttributeName,
|
||||
value: &Serialized,
|
||||
schema: &AttributeList,
|
||||
@@ -1,6 +1,6 @@
|
||||
pub mod prelude;
|
||||
|
||||
pub(crate) mod deserialize;
|
||||
pub mod deserialize;
|
||||
pub mod groups;
|
||||
pub mod jwt_refresh_storage;
|
||||
pub mod jwt_storage;
|
||||
@@ -91,6 +91,9 @@ path = "../crates/domain"
|
||||
path = "../crates/domain"
|
||||
features = ["test"]
|
||||
|
||||
[dependencies.lldap_domain_model]
|
||||
path = "../crates/domain-model"
|
||||
|
||||
[dependencies.lldap_validation]
|
||||
path = "../crates/validation"
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use crate::domain::{error::Result, model::UserColumn};
|
||||
use async_trait::async_trait;
|
||||
use lldap_domain::{
|
||||
requests::{
|
||||
@@ -11,6 +10,7 @@ use lldap_domain::{
|
||||
User, UserAndGroups, UserId, Uuid,
|
||||
},
|
||||
};
|
||||
use lldap_domain_model::{error::Result, model::UserColumn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashSet;
|
||||
|
||||
|
||||
@@ -16,12 +16,12 @@ use crate::domain::{
|
||||
LdapInfo, UserFieldType,
|
||||
},
|
||||
},
|
||||
model::UserColumn,
|
||||
schema::PublicSchema,
|
||||
};
|
||||
use lldap_domain::types::{
|
||||
AttributeName, AttributeType, GroupDetails, LdapObjectClass, User, UserAndGroups, UserId,
|
||||
};
|
||||
use lldap_domain_model::model::UserColumn;
|
||||
|
||||
pub fn get_user_attribute(
|
||||
user: &User,
|
||||
|
||||
@@ -7,7 +7,6 @@ use tracing::{debug, instrument, warn};
|
||||
use crate::domain::{
|
||||
handler::SubStringFilter,
|
||||
ldap::error::{LdapError, LdapResult},
|
||||
model::UserColumn,
|
||||
schema::PublicSchema,
|
||||
};
|
||||
use lldap_domain::types::{
|
||||
@@ -29,6 +28,7 @@ impl From<LdapSubstringFilter> for SubStringFilter {
|
||||
}
|
||||
}
|
||||
}
|
||||
use lldap_domain_model::model::UserColumn;
|
||||
|
||||
fn make_dn_pair<I>(mut iter: I) -> LdapResult<(String, String)>
|
||||
where
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
pub mod deserialize;
|
||||
pub mod error;
|
||||
pub mod handler;
|
||||
pub mod ldap;
|
||||
pub mod model;
|
||||
pub mod opaque_handler;
|
||||
pub mod schema;
|
||||
pub mod sql_backend_handler;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::domain::error::Result;
|
||||
use async_trait::async_trait;
|
||||
use lldap_domain::types::UserId;
|
||||
use lldap_domain_model::error::Result;
|
||||
|
||||
pub use lldap_auth::{login, registration};
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
use crate::{
|
||||
domain::{
|
||||
error::{DomainError, Result},
|
||||
handler::{GroupBackendHandler, GroupListerBackendHandler, GroupRequestFilter},
|
||||
model::{self, deserialize, GroupColumn, MembershipColumn},
|
||||
sql_backend_handler::SqlBackendHandler,
|
||||
},
|
||||
infra::access_control::UserReadableBackendHandler,
|
||||
@@ -12,6 +10,10 @@ use lldap_domain::{
|
||||
requests::{CreateGroupRequest, UpdateGroupRequest},
|
||||
types::{AttributeName, Group, GroupDetails, GroupId, Serialized, Uuid},
|
||||
};
|
||||
use lldap_domain_model::{
|
||||
error::{DomainError, Result},
|
||||
model::{self, deserialize, GroupColumn, MembershipColumn},
|
||||
};
|
||||
use sea_orm::{
|
||||
sea_query::{Alias, Cond, Expr, Func, IntoCondition, OnConflict, SimpleExpr},
|
||||
ActiveModelTrait, ColumnTrait, DatabaseTransaction, EntityTrait, QueryFilter, QueryOrder,
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
use super::{
|
||||
error::{DomainError, Result},
|
||||
handler::{BindRequest, LoginHandler},
|
||||
model::{self, UserColumn},
|
||||
opaque_handler::{login, registration, OpaqueHandler},
|
||||
sql_backend_handler::SqlBackendHandler,
|
||||
};
|
||||
@@ -9,6 +7,10 @@ use async_trait::async_trait;
|
||||
use base64::Engine;
|
||||
use lldap_auth::opaque;
|
||||
use lldap_domain::types::UserId;
|
||||
use lldap_domain_model::{
|
||||
error::{DomainError, Result},
|
||||
model::{self, UserColumn},
|
||||
};
|
||||
use sea_orm::{ActiveModelTrait, ActiveValue, EntityTrait, QuerySelect};
|
||||
use secstr::SecUtf8;
|
||||
use tracing::{debug, info, instrument, warn};
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
use crate::domain::{
|
||||
error::{DomainError, Result},
|
||||
handler::{ReadSchemaBackendHandler, SchemaBackendHandler},
|
||||
model,
|
||||
sql_backend_handler::SqlBackendHandler,
|
||||
};
|
||||
use async_trait::async_trait;
|
||||
@@ -10,6 +8,10 @@ use lldap_domain::{
|
||||
schema::{AttributeList, AttributeSchema, Schema},
|
||||
types::{AttributeName, LdapObjectClass},
|
||||
};
|
||||
use lldap_domain_model::{
|
||||
error::{DomainError, Result},
|
||||
model,
|
||||
};
|
||||
use sea_orm::{
|
||||
ActiveModelTrait, DatabaseTransaction, EntityTrait, QueryOrder, Set, TransactionTrait,
|
||||
};
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
use crate::domain::{
|
||||
error::{DomainError, Result},
|
||||
handler::{
|
||||
ReadSchemaBackendHandler, UserBackendHandler, UserListerBackendHandler, UserRequestFilter,
|
||||
},
|
||||
model::{self, deserialize, GroupColumn, UserColumn},
|
||||
sql_backend_handler::SqlBackendHandler,
|
||||
};
|
||||
use async_trait::async_trait;
|
||||
@@ -11,6 +9,10 @@ use lldap_domain::{
|
||||
requests::{CreateUserRequest, UpdateUserRequest},
|
||||
types::{AttributeName, GroupDetails, GroupId, Serialized, User, UserAndGroups, UserId, Uuid},
|
||||
};
|
||||
use lldap_domain_model::{
|
||||
error::{DomainError, Result},
|
||||
model::{self, deserialize, GroupColumn, UserColumn},
|
||||
};
|
||||
use sea_orm::{
|
||||
sea_query::{
|
||||
query::OnConflict, Alias, Cond, Expr, Func, IntoColumnRef, IntoCondition, SimpleExpr,
|
||||
@@ -414,10 +416,9 @@ impl UserBackendHandler for SqlBackendHandler {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::domain::{
|
||||
handler::SubStringFilter, model::UserColumn, sql_backend_handler::tests::*,
|
||||
};
|
||||
use crate::domain::{handler::SubStringFilter, sql_backend_handler::tests::*};
|
||||
use lldap_domain::types::{Attribute, JpegPhoto};
|
||||
use lldap_domain_model::model::UserColumn;
|
||||
use pretty_assertions::{assert_eq, assert_ne};
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
@@ -4,7 +4,6 @@ use async_trait::async_trait;
|
||||
use tracing::info;
|
||||
|
||||
use crate::domain::{
|
||||
error::Result,
|
||||
handler::{
|
||||
BackendHandler, GroupBackendHandler, GroupListerBackendHandler, GroupRequestFilter,
|
||||
ReadSchemaBackendHandler, SchemaBackendHandler, UserBackendHandler,
|
||||
@@ -23,6 +22,7 @@ use lldap_domain::{
|
||||
UserAndGroups, UserId,
|
||||
},
|
||||
};
|
||||
use lldap_domain_model::error::Result;
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
pub enum Permission {
|
||||
|
||||
@@ -23,12 +23,11 @@ use tracing::{debug, info, instrument, warn};
|
||||
|
||||
use lldap_auth::{login, password_reset, registration, JWTClaims};
|
||||
use lldap_domain::types::{GroupDetails, GroupName, UserId};
|
||||
use lldap_domain_model::{error::DomainError, model::UserColumn};
|
||||
|
||||
use crate::{
|
||||
domain::{
|
||||
error::DomainError,
|
||||
handler::{BackendHandler, BindRequest, LoginHandler, UserRequestFilter},
|
||||
model::UserColumn,
|
||||
opaque_handler::OpaqueHandler,
|
||||
},
|
||||
infra::{
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::domain::{
|
||||
model::{self, JwtRefreshStorageColumn, JwtStorageColumn, PasswordResetTokensColumn},
|
||||
sql_tables::DbConnection,
|
||||
};
|
||||
use crate::domain::sql_tables::DbConnection;
|
||||
use actix::prelude::{Actor, AsyncContext, Context};
|
||||
use cron::Schedule;
|
||||
use lldap_domain_model::model::{
|
||||
self, JwtRefreshStorageColumn, JwtStorageColumn, PasswordResetTokensColumn,
|
||||
};
|
||||
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter};
|
||||
use std::{str::FromStr, time::Duration};
|
||||
use tracing::{error, info, instrument};
|
||||
|
||||
@@ -5,7 +5,6 @@ use crate::{
|
||||
deserialize::deserialize_attribute_value,
|
||||
handler::{BackendHandler, ReadSchemaBackendHandler},
|
||||
ldap::utils::{map_user_field, UserFieldType},
|
||||
model::UserColumn,
|
||||
schema::PublicSchema,
|
||||
},
|
||||
infra::{
|
||||
@@ -19,6 +18,7 @@ use juniper::{graphql_object, FieldResult, GraphQLInputObject};
|
||||
use lldap_domain::types::{
|
||||
AttributeType, Cardinality, GroupDetails, GroupId, LdapObjectClass, UserId,
|
||||
};
|
||||
use lldap_domain_model::model::UserColumn;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tracing::{debug, debug_span, Instrument, Span};
|
||||
|
||||
|
||||
@@ -926,16 +926,18 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::{
|
||||
domain::handler::*,
|
||||
domain::model::UserColumn,
|
||||
infra::test_utils::{setup_default_schema, MockTestBackendHandler},
|
||||
};
|
||||
use chrono::TimeZone;
|
||||
use ldap3_proto::proto::{
|
||||
LdapDerefAliases, LdapSearchScope, LdapSubstringFilter, LdapWhoamiRequest,
|
||||
};
|
||||
use lldap_domain::schema::{AttributeList, AttributeSchema, Schema};
|
||||
use lldap_domain::types::*;
|
||||
use lldap_domain::uuid;
|
||||
use lldap_domain::{
|
||||
schema::{AttributeList, AttributeSchema, Schema},
|
||||
types::*,
|
||||
uuid,
|
||||
};
|
||||
use lldap_domain_model::model::UserColumn;
|
||||
use mockall::predicate::eq;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::collections::HashSet;
|
||||
@@ -1854,7 +1856,7 @@ mod tests {
|
||||
]))))
|
||||
.times(1)
|
||||
.return_once(|_| {
|
||||
Err(crate::domain::error::DomainError::InternalError(
|
||||
Err(lldap_domain_model::error::DomainError::InternalError(
|
||||
"Error getting groups".to_string(),
|
||||
))
|
||||
});
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use super::tcp_backend_handler::TcpBackendHandler;
|
||||
use crate::domain::{
|
||||
error::*,
|
||||
model::{self, JwtRefreshStorageColumn, JwtStorageColumn, PasswordResetTokensColumn},
|
||||
sql_backend_handler::SqlBackendHandler,
|
||||
};
|
||||
use crate::domain::sql_backend_handler::SqlBackendHandler;
|
||||
use async_trait::async_trait;
|
||||
use chrono::NaiveDateTime;
|
||||
use lldap_domain::types::UserId;
|
||||
use lldap_domain_model::{
|
||||
error::*,
|
||||
model::{self, JwtRefreshStorageColumn, JwtStorageColumn, PasswordResetTokensColumn},
|
||||
};
|
||||
use sea_orm::{
|
||||
sea_query::{Cond, Expr},
|
||||
ActiveModelTrait, ColumnTrait, EntityTrait, IntoActiveModel, QueryFilter, QuerySelect,
|
||||
|
||||
@@ -2,8 +2,8 @@ use async_trait::async_trait;
|
||||
use chrono::NaiveDateTime;
|
||||
use std::collections::HashSet;
|
||||
|
||||
use crate::domain::error::Result;
|
||||
use lldap_domain::types::UserId;
|
||||
use lldap_domain_model::error::Result;
|
||||
|
||||
#[async_trait]
|
||||
pub trait TcpBackendHandler: Sync {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
use crate::{
|
||||
domain::{
|
||||
error::DomainError,
|
||||
handler::{BackendHandler, LoginHandler},
|
||||
opaque_handler::OpaqueHandler,
|
||||
},
|
||||
@@ -19,6 +18,7 @@ use actix_service::map_config;
|
||||
use actix_web::{dev::AppConfig, guard, web, App, HttpResponse, Responder};
|
||||
use anyhow::{Context, Result};
|
||||
use hmac::Hmac;
|
||||
use lldap_domain_model::error::DomainError;
|
||||
use sha2::Sha512;
|
||||
use std::collections::HashSet;
|
||||
use std::path::PathBuf;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::domain::{error::Result, handler::*, opaque_handler::*};
|
||||
use crate::domain::{handler::*, opaque_handler::*};
|
||||
use lldap_domain::{
|
||||
requests::{
|
||||
CreateAttributeRequest, CreateGroupRequest, CreateUserRequest, UpdateGroupRequest,
|
||||
@@ -7,6 +7,7 @@ use lldap_domain::{
|
||||
schema::{AttributeList, AttributeSchema, Schema},
|
||||
types::*,
|
||||
};
|
||||
use lldap_domain_model::error::Result;
|
||||
|
||||
use async_trait::async_trait;
|
||||
use std::collections::HashSet;
|
||||
|
||||
Reference in New Issue
Block a user