crcnt_rbac 0.1.8

CRCNT RBAC Component
Documentation
use {crate::{service::Service,
             store::Store},
     chrono::Duration,
     crcnt_ddd_macros::Domain,
     mysql_async::Pool};

#[derive(Clone, Domain)]
#[domain_commands(builder)]
pub struct Config {
  pool:                      Pool,
  session_expiration:        Duration,
  password_salt:             String,
  password_max_failed_times: u8,
}

#[derive(Clone)]
pub struct Application {
  pub(crate) store:   Store,
  pub(crate) service: Service,
}

impl Application {
  pub fn new(config: Config) -> Self {
    let pool = config.pool;

    let store = Store { pool };
    let service = Service { session_expiration:        config.session_expiration,
                            password_salt:             config.password_salt,
                            password_max_failed_times: config.password_max_failed_times, };
    Self { store, service }
  }
}

mod feature_admin;
mod operator_admin;
mod role_admin;
mod session_admin;

pub use {feature_admin::ApplicationFeatureAdmin,
         operator_admin::ApplicationOperatorAdmin,
         role_admin::ApplicationRoleAdmin,
         session_admin::ApplicationSessionAdmin};