completed schema layout

This commit is contained in:
Sascha Kühl 2025-07-18 13:32:29 +02:00
parent 7b5123df16
commit 9f7a0c8625
4 changed files with 29 additions and 6 deletions

View File

@ -6,15 +6,18 @@
#include "matador/utils/base_class.hpp" #include "matador/utils/base_class.hpp"
namespace work::models::admin { namespace work::models::admin {
struct LdapUserDirectory;
struct LdapGroupSchemaSettings : core::Model { struct LdapGroupSchemaSettings : core::Model {
std::string group_object_filter; std::string group_object_filter;
std::string user_member_attribute; std::string user_member_attribute;
matador::object::object_ptr<LdapUserDirectory> ldap_user_directory;
template<typename Operator> template<typename Operator>
void process( Operator& op ) { void process( Operator& op ) {
namespace field = matador::access; namespace field = matador::access;
field::process( op, *matador::base_class<Model>( this ) ); field::process( op, *matador::base_class<Model>( this ) );
field::has_one(op, "ldap_user_directory", ldap_user_directory, matador::utils::default_foreign_attributes);
field::attribute( op, "group_object_filter", group_object_filter, 511 ); field::attribute( op, "group_object_filter", group_object_filter, 511 );
field::attribute( op, "user_member_attribute", user_member_attribute, 511 ); field::attribute( op, "user_member_attribute", user_member_attribute, 511 );
} }

View File

@ -6,16 +6,19 @@
#include "matador/utils/base_class.hpp" #include "matador/utils/base_class.hpp"
namespace work::models::admin { namespace work::models::admin {
struct LdapUserDirectory;
struct LdapImportSettings : core::Model { struct LdapImportSettings : core::Model {
std::string default_role; std::string default_role;
unsigned int sync_interval; unsigned int sync_interval;
unsigned int network_timeout; unsigned int network_timeout;
matador::object::object_ptr<LdapUserDirectory> ldap_user_directory;
template<typename Operator> template<typename Operator>
void process( Operator& op ) { void process( Operator& op ) {
namespace field = matador::access; namespace field = matador::access;
field::process( op, *matador::base_class<Model>( this ) ); field::process( op, *matador::base_class<Model>( this ) );
field::has_one(op, "ldap_user_directory", ldap_user_directory, matador::utils::default_foreign_attributes);
field::attribute( op, "default_role", default_role, 511 ); field::attribute( op, "default_role", default_role, 511 );
field::attribute( op, "sync_interval", sync_interval ); field::attribute( op, "sync_interval", sync_interval );
field::attribute( op, "network_timeout", network_timeout ); field::attribute( op, "network_timeout", network_timeout );

View File

@ -1,6 +1,9 @@
#ifndef LDAP_USER_DIRECTORY_HPP #ifndef LDAP_USER_DIRECTORY_HPP
#define LDAP_USER_DIRECTORY_HPP #define LDAP_USER_DIRECTORY_HPP
#include "LdapUserSchemaSettings.hpp"
#include "LdapGroupSchemaSettings.hpp"
#include "LdapImportSettings.hpp"
#include "UserDirectory.hpp" #include "UserDirectory.hpp"
#include "matador/object/collection.hpp" #include "matador/object/collection.hpp"
@ -13,14 +16,24 @@ struct LdapUserDirectory : UserDirectory {
std::string schema_base_dn; std::string schema_base_dn;
std::string additional_user_base_dn; std::string additional_user_base_dn;
std::string additional_group_base_dn; std::string additional_group_base_dn;
matador::object::object_ptr<LdapUserSchemaSettings> user_schema_settings;
matador::object::object_ptr<LdapGroupSchemaSettings> group_schema_settings;
matador::object::object_ptr<LdapImportSettings> import_settings;
matador::object::collection<std::string> users; matador::object::collection<std::string> users;
matador::object::collection<std::string> groups; matador::object::collection<std::string> groups;
template<typename Operator> template<typename Operator>
void process( Operator& op ) { void process( Operator& op ) {
namespace field = matador::access; namespace field = matador::access;
field::process( op, *matador::base_class<UserDirectory>( this ) ); field::process( op, *matador::base_class<UserDirectory>( this ) );
field::attribute( op, "schema_base_dn", schema_base_dn, 511 );
field::attribute( op, "additional_user_base_dn", additional_user_base_dn, 511 );
field::attribute( op, "additional_group_base_dn", additional_group_base_dn, 511 );
field::belongs_to( op, "user_schema_settings", user_schema_settings, matador::utils::default_foreign_attributes );
field::belongs_to( op, "group_schema_settings", group_schema_settings, matador::utils::default_foreign_attributes );
field::belongs_to( op, "import_settings", import_settings, matador::utils::default_foreign_attributes );
field::has_many( op, "ldap_users", users, "users_id", matador::utils::default_foreign_attributes );
field::has_many( op, "ldap_groups", groups, "groups_id", matador::utils::default_foreign_attributes );
} }
}; };
} }

View File

@ -5,18 +5,22 @@
#include "matador/utils/base_class.hpp" #include "matador/utils/base_class.hpp"
namespace work::models::admin { namespace work::models::admin {
struct LdapUserDirectory;
struct LdapUserSchemaSettings : core::Model { struct LdapUserSchemaSettings : core::Model {
std::string user_object_filter; std::string user_object_filter;
std::string user_unique_id_attribute; std::string user_unique_id_attribute;
std::string user_member_of_attribute; std::string user_member_of_attribute;
std::string user_name_attribute; std::string user_name_attribute;
matador::object::object_ptr<LdapUserDirectory> ldap_user_directory;
template<typename Operator> template<typename Operator>
void process( Operator& op ) { void process( Operator& op ) {
namespace field = matador::access; namespace field = matador::access;
field::process(op, *matador::base_class<Model>( this )); field::process(op, *matador::base_class<Model>( this ));
field::has_one(op, "ldap_user_directory", ldap_user_directory, matador::utils::default_foreign_attributes);
field::attribute(op, "user_object_filter", user_object_filter, 511); field::attribute(op, "user_object_filter", user_object_filter, 511);
field::attribute(op, "user_unique_id_attribute", user_unique_id_attribute, 511); field::attribute(op, "user_unique_id_attribute", user_unique_id_attribute, 511);
field::attribute(op, "user_member_of_attribute", user_member_of_attribute, 511); field::attribute(op, "user_member_of_attribute", user_member_of_attribute, 511);