pub struct ApplicationValidator { /* private fields */ }Expand description
High-level builder for validating your application’s permission list.
ApplicationValidator collects permission strings from one or more sources,
validates them for duplicates and hash collisions, and returns a
ValidationReport.
This is the easiest API to use at startup or in tests when you want to say: “here is the full permission surface of my application; make sure it is safe.”
If you need reusable post-validation inspection helpers, use
PermissionCollisionChecker directly.
§Examples
use webgates_core::permissions::application_validator::ApplicationValidator;///
let config_permissions = load_config_permissions();
let db_permissions = load_db_permissions().await?;
let report = ApplicationValidator::new()
.add_permissions(config_permissions)
.add_permissions(db_permissions)
.add_permission("system:health")
.validate()?;
assert!(report.is_valid());use webgates_core::permissions::application_validator::ApplicationValidator;
use webgates_core::permissions::collision_checker::PermissionCollisionChecker;
let permissions = vec!["user:read".to_string(), "user:write".to_string()];
let report = ApplicationValidator::new()
.add_permissions(permissions.clone())
.validate()
.map_err(|error| error.to_string())?;
let mut checker = PermissionCollisionChecker::new(permissions);
let inspected = checker.validate().map_err(|error| error.to_string())?;
assert_eq!(report.is_valid(), inspected.is_valid());Implementations§
Source§impl ApplicationValidator
impl ApplicationValidator
Sourcepub fn add_permissions<I, S>(self, permissions: I) -> Self
pub fn add_permissions<I, S>(self, permissions: I) -> Self
Adds permissions from an iterator of string-like values.
§Arguments
permissions- Iterator of items that can be converted to String
Sourcepub fn add_permission_strings(self, permissions: Vec<String>) -> Self
pub fn add_permission_strings(self, permissions: Vec<String>) -> Self
Adds permissions from a vector of owned strings.
This is a convenience method for callers that already have Vec<String>.
§Arguments
permissions- Vector of permission strings
Sourcepub fn add_permission<S: Into<String>>(self, permission: S) -> Self
pub fn add_permission<S: Into<String>>(self, permission: S) -> Self
Sourcepub fn validate(self) -> Result<ValidationReport, PermissionsError>
pub fn validate(self) -> Result<ValidationReport, PermissionsError>
Validates all collected permissions and returns a detailed report.
This method performs validation and logs results automatically. It
returns a ValidationReport whether validation succeeds or fails,
unless the validation process itself encounters an unexpected error.
§Returns
Ok(ValidationReport)- Complete validation reportErr(webgates_core::errors::Error)- Validation process failed
Sourcepub fn permission_count(&self) -> usize
pub fn permission_count(&self) -> usize
Returns how many permission strings are currently queued for validation.