dev #1

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