checkAuthorization method

Future<bool> checkAuthorization(
  1. String token, {
  2. String? resource,
  3. String? action,
  4. List<String>? requiredRoles,
  5. List<String>? requiredPermissions,
  6. bool requireAllRoles = false,
  7. bool requireAllPermissions = false,
  8. Map<String, dynamic>? context,
})

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;
  }
}