From 8da1c6e5b8a23633791f442c1591bbb9ef47a153 Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Thu, 7 May 2026 16:07:02 +0700 Subject: [PATCH] add section admin permission --- .../adminpanel/handler/AdminUserHandler.java | 49 ++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/adminpanel/handler/AdminUserHandler.java b/src/main/java/ru/soune/nocopy/adminpanel/handler/AdminUserHandler.java index 8a87c6d..2e84c40 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/handler/AdminUserHandler.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/handler/AdminUserHandler.java @@ -48,7 +48,8 @@ public class AdminUserHandler implements RequestHandler { case "set_super_admin" -> handleSetSuperAdmin(request, adminRequest); case "toggle_active" -> handleToggleActive(request, adminRequest); case "delete" -> handleDelete(request, adminRequest); - case "get_permissions" -> handleGetPermissions(request, adminRequest); + case "get_permissions_by_id" -> handleGetPermissionsById(request, adminRequest); + case "get_permissions_by_token" -> handleGetPermissionsByToken(request); case "update_permissions" -> handleUpdatePermissions(request, adminRequest); default -> handleInvalidAction(request, action); }; @@ -263,7 +264,7 @@ public class AdminUserHandler implements RequestHandler { .build(); } - private BaseResponse handleGetPermissions(BaseRequest request, AdminUserRequest adminRequest) { + private BaseResponse handleGetPermissionsById(BaseRequest request, AdminUserRequest adminRequest) { try { Long userId = adminRequest.getAdminId(); AdminUser admin = adminUserService.findById(userId); @@ -299,6 +300,50 @@ public class AdminUserHandler implements RequestHandler { } } + private BaseResponse handleGetPermissionsByToken(BaseRequest request) { + try { + String token = request.getToken(); + if (token == null || token.isEmpty()) { + return BaseResponse.builder() + .msgId(request.getMsgId()) + .messageCode(MessageCode.INVALID_CREDENTIALS.getCode()) + .messageDesc("Token is required") + .build(); + } + + String email = jwtUtil.extractEmail(token); + AdminUser admin = adminUserService.findByEmail(email); + Map sectionPermissions = permissionService.getAllPermissions(admin.getId()); + + Map permissionsMap = new HashMap<>(); + sectionPermissions.forEach((section, value) -> + permissionsMap.put(section.name().toLowerCase(), value)); + + AdminUserResponse response = AdminUserResponse.builder() + .id(admin.getId()) + .fullName(admin.getFullName()) + .email(admin.getEmail()) + .isActive(admin.getIsActive()) + .isSuperAdmin(AdminPermission.isSuperAdmin(admin.getPermissions())) + .createdAt(admin.getCreatedAt().toString()) + .permissions(permissionsMap) + .build(); + + return BaseResponse.builder() + .msgId(request.getMsgId()) + .messageCode(MessageCode.SUCCESS.getCode()) + .messageDesc(MessageCode.SUCCESS.getDescription()) + .messageBody(response) + .build(); + } catch (AdminUserNotFoundException e) { + return BaseResponse.builder() + .msgId(request.getMsgId()) + .messageCode(MessageCode.ADMIN_NOT_FOUND.getCode()) + .messageDesc(MessageCode.ADMIN_NOT_FOUND.getDescription()) + .build(); + } + } + private BaseResponse handleUpdatePermissions(BaseRequest request, AdminUserRequest adminRequest) { try { Long userId = adminRequest.getAdminId();