add permissons for update and create template

This commit is contained in:
2026-06-18 11:55:25 +07:00
parent bb54e6802b
commit 88e50bbedf
@@ -3,12 +3,16 @@ package ru.soune.nocopy.adminpanel.handler;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import ru.soune.nocopy.adminpanel.dto.*;
import ru.soune.nocopy.adminpanel.entity.AdminCreateTemplate;
import ru.soune.nocopy.adminpanel.entity.AdminSection;
import ru.soune.nocopy.adminpanel.service.AdminCreateTemplateService;
import ru.soune.nocopy.adminpanel.service.AdminSectionPermissionService;
import ru.soune.nocopy.adminpanel.util.MessageCode;
import java.util.Arrays;
@@ -24,6 +28,10 @@ public class CreateAdminTemplateHandler implements RequestHandler {
private final AdminCreateTemplateService adminCreateTemplateService;
private final AdminSectionPermissionService adminSectionPermissionService;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) {
AdminCreateTemplateRequest adminCreateTemplateRequest = objectMapper.convertValue(request.getMessageBody(),
@@ -42,6 +50,7 @@ public class CreateAdminTemplateHandler implements RequestHandler {
private BaseResponse handleDelete(BaseRequest request, AdminCreateTemplateRequest adminCreateTemplateRequest) {
Long adminCreateTemplateRequestId = adminCreateTemplateRequest.getId();
Long currentUserId = (Long) httpServletRequest.getAttribute("userId");
if (adminCreateTemplateRequestId == null || !adminCreateTemplateService.existById(adminCreateTemplateRequestId)) {
return BaseResponse.builder()
@@ -52,6 +61,17 @@ public class CreateAdminTemplateHandler implements RequestHandler {
.build();
}
if (!adminSectionPermissionService.canWrite(currentUserId,
AdminSection.STAFF)) {
return BaseResponse.builder()
.msgId(request.getMsgId())
.messageCode(MessageCode.PERMISSION_DENIED.getCode())
.messageDesc(MessageCode.PERMISSION_DENIED.getDescription())
.messageBody(Map.of("currentUserId", currentUserId))
.build();
}
adminCreateTemplateService.deleteTemplate(adminCreateTemplateRequestId);
@@ -65,6 +85,7 @@ public class CreateAdminTemplateHandler implements RequestHandler {
private BaseResponse handleUpdate(BaseRequest request, AdminCreateTemplateRequest adminCreateTemplateRequest) {
Map<String, Integer> permissionsMap = adminCreateTemplateRequest.getPermissions();
Long currentUserId = (Long) httpServletRequest.getAttribute("userId");
if (permissionsMap == null || permissionsMap.isEmpty()) {
return BaseResponse.builder()
@@ -75,6 +96,17 @@ public class CreateAdminTemplateHandler implements RequestHandler {
.build();
}
if (!adminSectionPermissionService.canWrite(currentUserId,
AdminSection.STAFF)) {
return BaseResponse.builder()
.msgId(request.getMsgId())
.messageCode(MessageCode.PERMISSION_DENIED.getCode())
.messageDesc(MessageCode.PERMISSION_DENIED.getDescription())
.messageBody(Map.of("currentUserId", currentUserId))
.build();
}
ObjectNode node = objectMapper.createObjectNode();
for (Map.Entry<String, Integer> entry: permissionsMap.entrySet()) {
@@ -106,6 +138,7 @@ public class CreateAdminTemplateHandler implements RequestHandler {
private BaseResponse handleCreate(BaseRequest request, AdminCreateTemplateRequest adminCreateTemplateRequest) {
Map<String, Integer> permissionsMap = adminCreateTemplateRequest.getPermissions();
Long currentUserId = (Long) httpServletRequest.getAttribute("userId");
if (permissionsMap == null || permissionsMap.isEmpty()) {
return BaseResponse.builder()
@@ -115,6 +148,18 @@ public class CreateAdminTemplateHandler implements RequestHandler {
.build();
}
if (!adminSectionPermissionService.canWrite(currentUserId,
AdminSection.STAFF)) {
return BaseResponse.builder()
.msgId(request.getMsgId())
.messageCode(MessageCode.PERMISSION_DENIED.getCode())
.messageDesc(MessageCode.PERMISSION_DENIED.getDescription())
.messageBody(Map.of("currentUserId", currentUserId))
.build();
}
ObjectNode node = objectMapper.createObjectNode();
for (Map.Entry<String, Integer> entry: permissionsMap.entrySet()) {
@@ -137,11 +182,25 @@ public class CreateAdminTemplateHandler implements RequestHandler {
}
private BaseResponse handleGetAll(BaseRequest request) {
Long currentUserId = (Long) httpServletRequest.getAttribute("userId");
if (!adminSectionPermissionService.canRead(currentUserId,
AdminSection.STAFF)) {
return BaseResponse.builder()
.msgId(request.getMsgId())
.messageCode(MessageCode.PERMISSION_DENIED.getCode())
.messageDesc(MessageCode.PERMISSION_DENIED.getDescription())
.messageBody(Map.of("currentUserId", currentUserId))
.build();
}
List<AdminCreateTemplateResponse> templateResponses = adminCreateTemplateService.getAllTemplates()
.stream()
.map(this::convertToResponse)
.toList();
return BaseResponse.builder()
.msgId(request.getMsgId())
.messageCode(MessageCode.SUCCESS.getCode())
@@ -152,6 +211,7 @@ public class CreateAdminTemplateHandler implements RequestHandler {
private BaseResponse handleGetById(BaseRequest request, AdminCreateTemplateRequest adminCreateTemplateRequest) {
Long id = adminCreateTemplateRequest.getId();
Long currentUserId = (Long) httpServletRequest.getAttribute("userId");
if (id == null || !adminCreateTemplateService.existById(id)) {
return BaseResponse.builder()
@@ -162,6 +222,17 @@ public class CreateAdminTemplateHandler implements RequestHandler {
.build();
}
if (!adminSectionPermissionService.canRead(currentUserId,
AdminSection.STAFF)) {
return BaseResponse.builder()
.msgId(request.getMsgId())
.messageCode(MessageCode.PERMISSION_DENIED.getCode())
.messageDesc(MessageCode.PERMISSION_DENIED.getDescription())
.messageBody(Map.of("currentUserId", currentUserId))
.build();
}
AdminCreateTemplate template = adminCreateTemplateService.getTemplateById(adminCreateTemplateRequest.getId());
return BaseResponse.builder()