mod audit;
mod options;
mod routes;
mod schema;
pub mod errors;
pub mod filters;
pub mod metadata;
pub mod resources;
pub mod validation;
#[cfg(not(feature = "test-util"))]
pub(crate) mod mappings;
#[cfg(feature = "test-util")]
pub mod mappings;
#[cfg(not(feature = "test-util"))]
pub(crate) mod patch;
#[cfg(feature = "test-util")]
pub mod patch;
#[cfg(not(feature = "test-util"))]
pub(crate) mod store;
#[cfg(feature = "test-util")]
pub mod store;
#[cfg(not(feature = "test-util"))]
pub(crate) mod token;
#[cfg(feature = "test-util")]
pub mod token;
pub use audit::ScimAuditEventResolver;
pub use options::{
AfterScimTokenGeneratedHook, AfterScimTokenGeneratedInput, BeforeScimTokenGeneratedHook,
BeforeScimTokenGeneratedInput, DefaultScimProvider, ProviderOwnershipOptions, ScimAuditEvent,
ScimAuditEventKind, ScimAuditSeverity, ScimBulkMode, ScimDeprovisionMode, ScimHookError,
ScimHookFuture, ScimOptions, ScimOrganizationMember, ScimTokenStorage, ScimTokenStorageFuture,
ScimTokenTransform,
};
use rustauth_core::plugin::AuthPlugin;
pub const UPSTREAM_PLUGIN_ID: &str = "scim";
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[must_use]
pub fn scim(options: ScimOptions) -> AuthPlugin {
let mut plugin = AuthPlugin::new(UPSTREAM_PLUGIN_ID).with_version(VERSION);
for contribution in schema::contributions() {
plugin = plugin.with_schema(contribution);
}
for endpoint in routes::endpoints(options) {
plugin = plugin.with_endpoint(endpoint);
}
plugin
}