server: Move PublicSchema to the domain crate

This commit is contained in:
Valentin Tolmer
2025-04-04 21:28:05 -05:00
committed by nitnelave
parent cdf43f2a69
commit 0eef966c3e
10 changed files with 31 additions and 28 deletions

View File

@@ -14,10 +14,10 @@ use crate::domain::{
get_user_id_from_distinguished_name_or_plain_name, map_group_field,
},
},
schema::PublicSchema,
};
use lldap_domain::types::{
AttributeName, AttributeType, Group, GroupId, LdapObjectClass, UserId, Uuid,
use lldap_domain::{
public_schema::PublicSchema,
types::{AttributeName, AttributeType, Group, GroupId, LdapObjectClass, UserId, Uuid},
};
use lldap_domain_handlers::handler::{GroupListerBackendHandler, GroupRequestFilter};

View File

@@ -14,10 +14,12 @@ use crate::domain::{
get_user_id_from_distinguished_name_or_plain_name, map_user_field,
},
},
schema::PublicSchema,
};
use lldap_domain::types::{
AttributeName, AttributeType, GroupDetails, LdapObjectClass, User, UserAndGroups, UserId,
use lldap_domain::{
public_schema::PublicSchema,
types::{
AttributeName, AttributeType, GroupDetails, LdapObjectClass, User, UserAndGroups, UserId,
},
};
use lldap_domain_handlers::handler::{UserListerBackendHandler, UserRequestFilter};
use lldap_domain_model::model::UserColumn;

View File

@@ -4,12 +4,12 @@ use chrono::TimeZone;
use ldap3_proto::LdapResultCode;
use tracing::{debug, instrument, warn};
use crate::domain::{
ldap::error::{LdapError, LdapResult},
schema::PublicSchema,
};
use lldap_domain::types::{
Attribute, AttributeName, AttributeType, AttributeValue, Cardinality, GroupName, UserId,
use crate::domain::ldap::error::{LdapError, LdapResult};
use lldap_domain::{
public_schema::PublicSchema,
types::{
Attribute, AttributeName, AttributeType, AttributeValue, Cardinality, GroupName, UserId,
},
};
use lldap_domain_model::model::UserColumn;

View File

@@ -1,7 +1,6 @@
pub mod deserialize;
pub mod ldap;
pub mod opaque_handler;
pub mod schema;
pub mod sql_backend_handler;
pub mod sql_group_backend_handler;
pub mod sql_migrations;

View File

@@ -1,113 +0,0 @@
use lldap_domain::{
schema::{AttributeSchema, Schema},
types::AttributeType,
};
use serde::{Deserialize, Serialize};
#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Clone)]
pub struct PublicSchema(Schema);
impl PublicSchema {
pub fn get_schema(&self) -> &Schema {
&self.0
}
}
impl From<Schema> for PublicSchema {
fn from(mut schema: Schema) -> Self {
schema.user_attributes.attributes.extend_from_slice(&[
AttributeSchema {
name: "user_id".into(),
attribute_type: AttributeType::String,
is_list: false,
is_visible: true,
is_editable: false,
is_hardcoded: true,
is_readonly: true,
},
AttributeSchema {
name: "creation_date".into(),
attribute_type: AttributeType::DateTime,
is_list: false,
is_visible: true,
is_editable: false,
is_hardcoded: true,
is_readonly: true,
},
AttributeSchema {
name: "mail".into(),
attribute_type: AttributeType::String,
is_list: false,
is_visible: true,
is_editable: true,
is_hardcoded: true,
is_readonly: false,
},
AttributeSchema {
name: "uuid".into(),
attribute_type: AttributeType::String,
is_list: false,
is_visible: true,
is_editable: false,
is_hardcoded: true,
is_readonly: true,
},
AttributeSchema {
name: "display_name".into(),
attribute_type: AttributeType::String,
is_list: false,
is_visible: true,
is_editable: true,
is_hardcoded: true,
is_readonly: false,
},
]);
schema
.user_attributes
.attributes
.sort_by(|a, b| a.name.cmp(&b.name));
schema.group_attributes.attributes.extend_from_slice(&[
AttributeSchema {
name: "group_id".into(),
attribute_type: AttributeType::Integer,
is_list: false,
is_visible: true,
is_editable: false,
is_hardcoded: true,
is_readonly: true,
},
AttributeSchema {
name: "creation_date".into(),
attribute_type: AttributeType::DateTime,
is_list: false,
is_visible: true,
is_editable: false,
is_hardcoded: true,
is_readonly: true,
},
AttributeSchema {
name: "uuid".into(),
attribute_type: AttributeType::String,
is_list: false,
is_visible: true,
is_editable: false,
is_hardcoded: true,
is_readonly: true,
},
AttributeSchema {
name: "display_name".into(),
attribute_type: AttributeType::String,
is_list: false,
is_visible: true,
is_editable: true,
is_hardcoded: true,
is_readonly: false,
},
]);
schema
.group_attributes
.attributes
.sort_by(|a, b| a.name.cmp(&b.name));
PublicSchema(schema)
}
}

View File

@@ -9,8 +9,8 @@ use lldap_domain_handlers::handler::{
};
use tracing::info;
use crate::domain::schema::PublicSchema;
use lldap_domain::{
public_schema::PublicSchema,
requests::{
CreateAttributeRequest, CreateGroupRequest, CreateUserRequest, UpdateGroupRequest,
UpdateUserRequest,

View File

@@ -1,7 +1,7 @@
use std::{collections::BTreeMap, sync::Arc};
use crate::{
domain::{deserialize::deserialize_attribute_value, schema::PublicSchema},
domain::deserialize::deserialize_attribute_value,
infra::{
access_control::{
AdminBackendHandler, ReadonlyBackendHandler, UserReadableBackendHandler,
@@ -13,6 +13,7 @@ use crate::{
use anyhow::{Context as AnyhowContext, anyhow};
use juniper::{FieldError, FieldResult, GraphQLInputObject, GraphQLObject, graphql_object};
use lldap_domain::{
public_schema::PublicSchema,
requests::{
CreateAttributeRequest, CreateGroupRequest, CreateUserRequest, UpdateGroupRequest,
UpdateUserRequest,

View File

@@ -4,7 +4,6 @@ use crate::{
domain::{
deserialize::deserialize_attribute_value,
ldap::utils::{UserFieldType, map_user_field},
schema::PublicSchema,
},
infra::{
access_control::{ReadonlyBackendHandler, UserReadableBackendHandler},
@@ -14,8 +13,9 @@ use crate::{
use anyhow::Context as AnyhowContext;
use chrono::TimeZone;
use juniper::{FieldResult, GraphQLInputObject, graphql_object};
use lldap_domain::types::{
AttributeType, Cardinality, GroupDetails, GroupId, LdapObjectClass, UserId,
use lldap_domain::{
public_schema::PublicSchema,
types::{AttributeType, Cardinality, GroupDetails, GroupId, LdapObjectClass, UserId},
};
use lldap_domain_handlers::handler::{BackendHandler, ReadSchemaBackendHandler};
use lldap_domain_model::model::UserColumn;

View File

@@ -5,18 +5,18 @@ use ldap3_proto::{
OID_PASSWORD_MODIFY, OID_WHOAMI,
},
};
use lldap_domain::types::{Group, UserAndGroups};
use lldap_domain::{
public_schema::PublicSchema,
types::{Group, UserAndGroups},
};
use tracing::{debug, instrument, warn};
use crate::{
domain::{
ldap::{
error::{LdapError, LdapResult},
group::{convert_groups_to_ldap_op, get_groups_list},
user::{convert_users_to_ldap_op, get_user_list},
utils::{LdapInfo, is_subtree, parse_distinguished_name},
},
schema::PublicSchema,
domain::ldap::{
error::{LdapError, LdapResult},
group::{convert_groups_to_ldap_op, get_groups_list},
user::{convert_users_to_ldap_op, get_user_list},
utils::{LdapInfo, is_subtree, parse_distinguished_name},
},
infra::access_control::UserAndGroupListerBackendHandler,
};