evaluate method

Evaluate a PermissionRequest against all active rules.

Returns a PermissionDecision from the first matching rule, or a decision with defaultLevel if no rule matches.

Implementation

PermissionDecision evaluate(PermissionRequest request) {
  for (final rule in _rules) {
    if (!rule.isActive) continue;
    if (rule.matches(request)) {
      return PermissionDecision(
        level: rule.level,
        matchedRule: rule,
        reason: 'Matched rule "${rule.name}" (${rule.id})',
        autoExpiry: rule.level == PermissionLevel.allowOnce
            ? DateTime.now()
            : null,
      );
    }
  }

  // No rule matched — use default
  return PermissionDecision(
    level: defaultLevel,
    reason:
        'No matching rule; using default level '
        '(${defaultLevel.name})',
  );
}