diff --git a/src/main/java/ru/soune/nocopy/adminpanel/entity/PermissionType.java b/src/main/java/ru/soune/nocopy/adminpanel/entity/PermissionType.java new file mode 100644 index 0000000..dd6b983 --- /dev/null +++ b/src/main/java/ru/soune/nocopy/adminpanel/entity/PermissionType.java @@ -0,0 +1,14 @@ +package ru.soune.nocopy.adminpanel.entity; + +import lombok.Getter; + +@Getter +public enum PermissionType { + READ(0b01), NONE(0b00), WRITE_AND_READ(0b11); + + private final Integer value; + + PermissionType(Integer value) { + this.value = value; + } +} 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 2e84c40..7cfef37 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/handler/AdminUserHandler.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/handler/AdminUserHandler.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Component; import ru.soune.nocopy.adminpanel.dto.*; import ru.soune.nocopy.adminpanel.entity.AdminSection; import ru.soune.nocopy.adminpanel.entity.AdminUser; +import ru.soune.nocopy.adminpanel.entity.PermissionType; import ru.soune.nocopy.adminpanel.exceptions.AdminUserNotFoundException; import ru.soune.nocopy.adminpanel.exceptions.EmailAlreadyExistsException; import ru.soune.nocopy.adminpanel.permission.AdminPermission; @@ -110,9 +111,41 @@ public class AdminUserHandler implements RequestHandler { adminRequest.getFullName(), adminRequest.getEmail(), adminRequest.getPassword(), - superAdmin - ); + superAdmin); + Map sectionPermissons = new HashMap<>(); + + if (superAdmin) { + sectionPermissons.put(AdminSection.DASH, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.USERS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.STAFF, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.SUBSCRIPTIONS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.TARIFFS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.CONTENT_MODERATION, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.COMPLAINTS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.CLAIMS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.MAILINGS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.API, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.MONEY, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.KYC, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.AGREEMENTS, PermissionType.WRITE_AND_READ.getValue()); + } else { + sectionPermissons.put(AdminSection.DASH, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.USERS, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.STAFF, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.SUBSCRIPTIONS, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.TARIFFS, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.CONTENT_MODERATION, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.COMPLAINTS, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.CLAIMS, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.MAILINGS, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.API, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.MONEY, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.KYC, PermissionType.READ.getValue()); + sectionPermissons.put(AdminSection.AGREEMENTS, PermissionType.READ.getValue()); + } + permissionService.setAllPermissions(admin.getId(), sectionPermissons); + return BaseResponse.builder() .msgId(request.getMsgId()) .messageCode(MessageCode.SUCCESS.getCode()) @@ -193,6 +226,24 @@ public class AdminUserHandler implements RequestHandler { try { AdminUser admin = adminUserService.setSuperAdmin(adminRequest.getAdminId(), adminRequest.getIsSuperAdmin()); + Map sectionPermissons = new HashMap<>(); + + sectionPermissons.put(AdminSection.DASH, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.USERS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.STAFF, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.SUBSCRIPTIONS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.TARIFFS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.CONTENT_MODERATION, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.COMPLAINTS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.CLAIMS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.MAILINGS, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.API, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.MONEY, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.KYC, PermissionType.WRITE_AND_READ.getValue()); + sectionPermissons.put(AdminSection.AGREEMENTS, PermissionType.WRITE_AND_READ.getValue()); + + permissionService.setAllPermissions(admin.getId(), sectionPermissons); + return BaseResponse.builder() .msgId(request.getMsgId()) .messageCode(MessageCode.SUCCESS.getCode()) diff --git a/src/main/java/ru/soune/nocopy/adminpanel/service/AdminSectionPermissionService.java b/src/main/java/ru/soune/nocopy/adminpanel/service/AdminSectionPermissionService.java index 331b092..2d0ee24 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/service/AdminSectionPermissionService.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/service/AdminSectionPermissionService.java @@ -50,6 +50,7 @@ public class AdminSectionPermissionService { public void setAllPermissions(Long userId, Map permissions) { AdminSectionPermission permission = getOrCreate(userId); permissions.forEach((section, value) -> setSectionValue(permission, section, value)); + repository.save(permission); }