rs-tenant 0.4.0

Multi-tenant RBAC authorization engine for Rust
Documentation
use crate::scope::AccessScope;

/// 最终的允许或拒绝决策。
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AccessDecision {
    /// 允许访问。
    Allow,
    /// 拒绝访问。
    Deny,
}

/// 用于解释和测试的高层拒绝原因。
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DenyReason {
    /// 租户不存在或未激活。
    TenantInactive,
    /// 主体成员关系不存在或未激活。
    PrincipalInactive,
    /// 没有匹配的权限授权。
    PermissionMissing,
    /// 只有路径级授权时调用了租户级 API。
    TargetScopeRequired,
    /// 目标路径不在可访问根路径内。
    ScopeDenied,
}

/// 授权决策的轻量解释信息。
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AccessExplanation {
    /// 最终决策。
    pub decision: AccessDecision,
    /// 当决策为 [`AccessDecision::Deny`] 时的拒绝原因。
    pub reason: Option<DenyReason>,
    /// 检查过程中计算出的有效访问范围。
    pub scope: AccessScope,
}