diff --git a/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java index 4855ca6..fbc54e1 100644 --- a/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java @@ -14,15 +14,13 @@ import ru.soune.nocopy.dto.complaint.ComplaintRequest; import ru.soune.nocopy.dto.complaint.ComplaintResponse; import ru.soune.nocopy.entity.complaint.ComplaintStatus; import ru.soune.nocopy.entity.user.User; +import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.service.complaint.ComplaintEntityService; import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.user.UserService; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Slf4j @Component @@ -38,6 +36,8 @@ public class ComplaintEntityHandler implements RequestHandler { private final AuthService authService; + private final FileEntityRepository fileEntityRepository; + @Override public BaseResponse handle(BaseRequest request) throws Exception { Integer msgId = request.getMsgId(); @@ -61,7 +61,7 @@ public class ComplaintEntityHandler implements RequestHandler { try { return switch (action) { case "create" -> handleCreate(msgId, complaintRequest); - case "get" -> handleGet(msgId, complaintRequest); + case "get" -> handleGet(msgId, complaintRequest, userId); case "get_all" -> handleGetAll(msgId, complaintRequest, emails); case "get_by_violation" -> handleGetByViolation(msgId, complaintRequest); case "update_status" -> handleUpdateStatus(msgId, complaintRequest); @@ -88,10 +88,16 @@ public class ComplaintEntityHandler implements RequestHandler { return successResponse(msgId, "Complaint created successfully", response); } - private BaseResponse handleGet(Integer msgId, ComplaintRequest req) { + private BaseResponse handleGet(Integer msgId, ComplaintRequest req, Long userId) { if (req.getId() == null) return errorResponse(msgId, MessageCode.NOT_FOUND.getCode(), "id is required"); ComplaintResponse response = complaintService.getComplaintById(req.getId()); + + if (!Objects.equals(fileEntityRepository.findByFileId(response.getFileId()).getUserId(), userId)) { + return errorResponse(msgId, MessageCode.USER_NOT_HAD_PERMISSION.getCode(), + "User not have permission for file"); + } + return successResponse(msgId, "Complaint retrieved successfully", response); }