Skip to main content

ldap_acis/
lib.rs

1//! LDAP Access Control Instructions (ACI) system.
2//!
3//! This crate implements LDAP-style Access Control Instructions built on top of
4//! the algebraically-correct `acls-rs` permission system.
5//!
6//! # LDAP ACI Overview
7//!
8//! LDAP ACIs control access to directory entries and attributes. They consist of:
9//!
10//! - **Target**: What entries/attributes the ACI applies to (DN patterns, filters)
11//! - **Permissions**: What operations are allowed (read, write, search, compare, add, delete)
12//! - **Bind Rules**: Who the ACI applies to (user DNs, groups, IP addresses)
13
14pub mod aci;
15pub mod cache;
16pub mod dn;
17pub(crate) mod dn_index;
18pub mod entry;
19pub mod generator;
20pub mod operation;
21pub(crate) mod optimized;
22pub mod parser;
23pub mod transformer;
24
25pub use aci::{
26    Aci, AciBuilder, AciPolicy, AttributeSet, AuthorizationResult, BindRule, CompOp, DnScope,
27    Scope, TargetAttrFilter, TargetAttrFilterOp, TargetFilter,
28};
29pub use cache::CachedAciPolicy;
30pub use entry::{LdapAttribute, LdapEntry};
31pub use operation::{LdapOperation, LdapPermission, OperationSet, OperationType, PermissionSlice};
32
33pub mod prelude {
34    pub use crate::aci::{
35        Aci, AciBuilder, AciPolicy, AttributeSet, AuthorizationResult, BindRule, CompOp, DnScope,
36        Scope, TargetAttrFilter, TargetAttrFilterOp, TargetFilter,
37    };
38    pub use crate::cache::CachedAciPolicy;
39    pub use crate::entry::{LdapAttribute, LdapEntry};
40    pub use crate::generator::{
41        generate, AciGenerator, Ds389 as Ds389Gen, GenerateError, OpenLdap as OpenLdapGen,
42    };
43    pub use crate::operation::{
44        LdapOperation, LdapPermission, OperationSet, OperationType, PermissionSlice,
45    };
46    pub use crate::parser::{parse, AciFormat, Ds389, OpenLdap, ParseError};
47    pub use crate::transformer::{transform, TransformBuilder, TransformError};
48    pub use acls_rs::prelude::*;
49}