diff --git a/src/main/java/ru/soune/nocopy/adminpanel/client/DashBoardAppClient.java b/src/main/java/ru/soune/nocopy/adminpanel/client/DashBoardAppClient.java index ffad958..40a4118 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/client/DashBoardAppClient.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/client/DashBoardAppClient.java @@ -1,8 +1,12 @@ package ru.soune.nocopy.adminpanel.client; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; import ru.soune.nocopy.adminpanel.dto.BaseRequest; import java.util.Map; @@ -18,4 +22,7 @@ public interface DashBoardAppClient { @PostMapping("api/internal/data-control") Map internalDataControl(@RequestBody BaseRequest request); + + @GetMapping("api/internal/data-download/{fileId}") + public ResponseEntity download(@PathVariable String fileId); } diff --git a/src/main/java/ru/soune/nocopy/adminpanel/controller/AdminController.java b/src/main/java/ru/soune/nocopy/adminpanel/controller/AdminController.java index 5914ba7..ed92236 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/controller/AdminController.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/controller/AdminController.java @@ -4,10 +4,7 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import ru.soune.nocopy.adminpanel.client.DashBoardAppClient; import ru.soune.nocopy.adminpanel.dto.BaseRequest; import ru.soune.nocopy.adminpanel.dto.BaseResponse; @@ -117,4 +114,20 @@ public class AdminController { .messageBody(response) .build()); } + + @GetMapping("/download/{fileId}") + public ResponseEntity downloadFile(@PathVariable String fileId) { + Long currentUserId = (Long) httpServletRequest.getAttribute("userId"); + + if (!adminSectionPermissionService.canRead(currentUserId, + AdminSection.USERS)) { + return ResponseEntity.ok(BaseResponse.builder() + .msgId(0) + .messageCode(MessageCode.PERMISSION_DENIED.getCode()) + .messageDesc("You can't control") + .build()); + } + + return dashBoardAppClient.download(fileId); + } }