From 95825dc7fcbef3c135f7e87912d1e682a384bc9a Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Mon, 25 May 2026 13:46:14 +0700 Subject: [PATCH] add internal feign key --- .../adminpanel/client/DashBoardAppClient.java | 3 +++ .../nocopy/adminpanel/config/FeignConfig.java | 20 ++++++++++++++++ .../controller/AdminController.java | 24 +++++++++++++++++++ src/main/resources/application.yaml | 3 +++ 4 files changed, 50 insertions(+) create mode 100644 src/main/java/ru/soune/nocopy/adminpanel/config/FeignConfig.java 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 795e39c..2935a9c 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/client/DashBoardAppClient.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/client/DashBoardAppClient.java @@ -12,4 +12,7 @@ public interface DashBoardAppClient { @PostMapping("/api/v1/data") Map getUsersWithPagination(@RequestBody BaseRequest request); + + @PostMapping("api/internal/data") + Map internalData(@RequestBody BaseRequest request); } diff --git a/src/main/java/ru/soune/nocopy/adminpanel/config/FeignConfig.java b/src/main/java/ru/soune/nocopy/adminpanel/config/FeignConfig.java new file mode 100644 index 0000000..74d0512 --- /dev/null +++ b/src/main/java/ru/soune/nocopy/adminpanel/config/FeignConfig.java @@ -0,0 +1,20 @@ +package ru.soune.nocopy.adminpanel.config; + +import feign.RequestInterceptor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FeignConfig { + + @Value("${app.internal-api-key}") + private String internalApiKey; + + @Bean + public RequestInterceptor internalKeyInterceptor() { + return requestTemplate -> { + requestTemplate.header("X-Internal-Key", internalApiKey); + }; + } +} 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 e98789d..ac6465d 100644 --- a/src/main/java/ru/soune/nocopy/adminpanel/controller/AdminController.java +++ b/src/main/java/ru/soune/nocopy/adminpanel/controller/AdminController.java @@ -90,6 +90,30 @@ public class AdminController { .build()); } + @PostMapping("/internal-info") + public ResponseEntity handleInternalInfo(@RequestBody BaseRequest request) { + Long currentUserId = (Long) httpServletRequest.getAttribute("userId"); + + if (!adminSectionPermissionService.canRead(currentUserId, + AdminSection.USERS)) { + return ResponseEntity.ok(BaseResponse.builder() + .msgId(request.getMsgId()) + .messageCode(MessageCode.PERMISSION_DENIED.getCode()) + .messageDesc("You can't reads") + .build()); + } + + Map response = dashBoardAppClient.internalData(request); + + return ResponseEntity.ok( + BaseResponse.builder() + .msgId(request.getMsgId()) + .messageCode(MessageCode.SUCCESS.getCode()) + .messageDesc(MessageCode.SUCCESS.getDescription()) + .messageBody(response) + .build()); + } + @PostMapping("/control") public ResponseEntity handleControl(@RequestBody BaseRequest request) { Long currentUserId = (Long) httpServletRequest.getAttribute("userId"); diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 2585e56..a8ecf31 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -18,6 +18,9 @@ spring: server: port: ${SERVER_PORT:8082} +app: + internal-api-key: "tljzkXiEYF1klSHuG2hPZKjx6EsBX8RQP6UrzMdQanSKbRYuHuOBwrXejZkn7V4FICvIahoDmYD2hjNBPw61NFbGIt4scOzwZpyCiXEa1YKLAeJSPso4S43LIZlKjO4S" + jwt: secret: Z29nb3Bvd2VycmFuZ2VydHVtYmF5YW1iZjMyNDIyMjh3aW5lcndpbmVy expiration: 3600000