Skip to main content

ExpressionRoot

Trait ExpressionRoot 

Source
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§

Source

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 true
  • Some(false) - Function evaluated to false
  • None - Unknown function (will result in an error)

Implementors§