use super::*;
pub async fn new(config: PermissionConfig) -> Result<impl PermissionProvider, PermissionConfigError> {
config.validate()?;
impl_::default::YamlPermissionProvider::new(config)
.await
.map_err(|e| PermissionConfigError::InvalidValue {
field: "policy_path".into(),
reason: e.to_string(),
})
}
#[cfg(feature = "cache")]
pub async fn with_cache(
config: PermissionConfig,
cache: std::sync::Arc<oxcache::Cache<String, RolePolicy>>,
) -> Result<impl PermissionProvider, PermissionConfigError> {
config.validate()?;
impl_::default::YamlPermissionProvider::with_cache(config, cache)
.await
.map_err(|e| PermissionConfigError::InvalidValue {
field: "policy_path".into(),
reason: e.to_string(),
})
}
pub fn new_in_memory() -> impl PermissionProvider {
impl_::memory::MemoryPermissionProvider::new()
}