From cd18fd4b960f79164d0d3bb066025f2a4a9f7eb3 Mon Sep 17 00:00:00 2001 From: akastijn Date: Sun, 19 Jul 2026 20:17:01 +0200 Subject: [PATCH] Expand moderator roles by adding `SCOPE_mod` permission and updating authorization logic. --- .../altitudeweb/controllers/event/EventController.java | 6 +++++- .../src/main/resources/schemas/permissions/permissions.yml | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/alttd/altitudeweb/controllers/event/EventController.java b/backend/src/main/java/com/alttd/altitudeweb/controllers/event/EventController.java index e91dd1a..6b4057c 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/controllers/event/EventController.java +++ b/backend/src/main/java/com/alttd/altitudeweb/controllers/event/EventController.java @@ -42,7 +42,7 @@ public class EventController { } List authorities = jwt.getClaimAsStringList("authorities"); - if (authorities == null || !authorities.contains(PermissionClaimDto.HEAD_MOD.getValue())) { + if (authorities == null || doesNotHavePermission(authorities)) { throw new ResponseStatusException(HttpStatus.FORBIDDEN); } @@ -64,4 +64,8 @@ public class EventController { return eventPublisher.subscribe(new EventUser(subject, authorities), json); } + + private static boolean doesNotHavePermission(List authorities) { + return !authorities.contains(PermissionClaimDto.HEAD_MOD.getValue()) && !authorities.contains(PermissionClaimDto.MOD.getValue()); + } } diff --git a/open_api/src/main/resources/schemas/permissions/permissions.yml b/open_api/src/main/resources/schemas/permissions/permissions.yml index 16466f8..01ad80b 100644 --- a/open_api/src/main/resources/schemas/permissions/permissions.yml +++ b/open_api/src/main/resources/schemas/permissions/permissions.yml @@ -2,7 +2,7 @@ components: schemas: PermissionClaim: type: string - enum: [ SCOPE_user, SCOPE_head_mod ] + enum: [ SCOPE_user, SCOPE_head_mod, SCOPE_mod ] description: Permission claims used for authorization - x-enum-varnames: [ USER, HEAD_MOD ] + x-enum-varnames: [ USER, HEAD_MOD, MOD ] x-enum-descriptions: [ "User permission", "Head moderator permission" ]