pub trait ExpressionRoot: Send + Sync {
// Required method
fn evaluate_function(
&self,
name: &str,
args: &[String],
user: Option<&User>,
) -> Option<bool>;
}Expand description
Trait for evaluating security expression functions.
§Spring Security Equivalent
SecurityExpressionRoot + MethodSecurityExpressionOperations
Implement this trait to add custom security expressions.
§Example
ⓘ
use actix_security_core::http::security::expression::{ExpressionRoot, DefaultExpressionRoot};
use actix_security_core::http::security::User;
struct CustomExpressionRoot {
default: DefaultExpressionRoot,
allowed_departments: Vec<String>,
}
impl ExpressionRoot for CustomExpressionRoot {
fn evaluate_function(&self, name: &str, args: &[String], user: Option<&User>) -> Option<bool> {
match name {
"inDepartment" => {
let dept = args.first()?;
Some(self.allowed_departments.contains(dept))
}
_ => self.default.evaluate_function(name, args, user),
}
}
}Required Methods§
Sourcefn evaluate_function(
&self,
name: &str,
args: &[String],
user: Option<&User>,
) -> Option<bool>
fn evaluate_function( &self, name: &str, args: &[String], user: Option<&User>, ) -> Option<bool>
Evaluates a function expression.
§Arguments
name- The function name (e.g., “hasRole”, “hasAuthority”)args- The function arguments (e.g., [“ADMIN”])user- The authenticated user, if any
§Returns
Some(true)- Function evaluated to trueSome(false)- Function evaluated to falseNone- Unknown function (will result in an error)