checkAuthorization method
Comprehensive authorization check with multiple criteria
Implementation
Future<bool> checkAuthorization(
String token, {
String? resource,
String? action,
List<String>? requiredRoles,
List<String>? requiredPermissions,
bool requireAllRoles = false,
bool requireAllPermissions = false,
Map<String, dynamic>? context,
}) async {
try {
final authContext = await authorize(
token,
resource: resource,
action: action,
context: context,
);
if (requiredRoles != null && requiredRoles.isNotEmpty) {
if (requireAllRoles) {
if (!authContext.authorization.hasAllRoles(requiredRoles)) {
return false;
}
} else {
if (!authContext.authorization.hasAnyRole(requiredRoles)) {
return false;
}
}
}
if (requiredPermissions != null && requiredPermissions.isNotEmpty) {
if (requireAllPermissions) {
if (!authContext.authorization.hasAllPermissions(
requiredPermissions,
)) {
return false;
}
} else {
if (!authContext.authorization.hasAnyPermission(
requiredPermissions,
)) {
return false;
}
}
}
return true;
} on Exception {
return false;
}
}