From 62f400dffe4db2c570926c9a831617ed14a560e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B2=9C=20=EC=A7=84=EA=B0=95?= <jjjjjk12@ajou.ac.kr> Date: Wed, 26 Mar 2025 22:39:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=96=B4?= =?UTF-8?q?=EB=93=9C=EB=AF=BC=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=20=EA=B6=8C=ED=95=9C=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aolda/itda/config/AuthInterceptor.java | 15 ++++++++--- .../com/aolda/itda/config/LoggingFilter.java | 3 --- .../com/aolda/itda/service/AuthService.java | 25 +++++++++++++++++++ 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/aolda/itda/config/AuthInterceptor.java b/src/main/java/com/aolda/itda/config/AuthInterceptor.java index 3a95f8a..b0767e3 100644 --- a/src/main/java/com/aolda/itda/config/AuthInterceptor.java +++ b/src/main/java/com/aolda/itda/config/AuthInterceptor.java @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -56,9 +57,17 @@ public class AuthInterceptor implements HandlerInterceptor { } /* 프로젝트 리스트 조회 */ - List<String> projects = authService.getProjectsWithUser(Map.of("id", userId, "token", token)) - .stream().map(IdAndNameDTO::getId) - .toList(); + List<String> projects; + if (authService.isAdmin(Map.of("id", userId, "token", token))) { + projects = authService.getAllProjects(token); + } + + else { + projects = authService.getProjectsWithUser(Map.of("id", userId, "token", token)) + .stream().map(IdAndNameDTO::getId) + .toList(); + } + request.setAttribute("projects", projects); request.setAttribute("user", Map.of("id", userId, "token", token)); return true; diff --git a/src/main/java/com/aolda/itda/config/LoggingFilter.java b/src/main/java/com/aolda/itda/config/LoggingFilter.java index 0dd73b1..49264ec 100644 --- a/src/main/java/com/aolda/itda/config/LoggingFilter.java +++ b/src/main/java/com/aolda/itda/config/LoggingFilter.java @@ -23,16 +23,13 @@ public class LoggingFilter extends OncePerRequestFilter { // Request Body를 읽을 수 있도록 래핑 ContentCachingRequestWrapper cachingRequest = new ContentCachingRequestWrapper(request); - System.out.println("필터 적용"); filterChain.doFilter(cachingRequest, response); // 로그 기록 logRequest(cachingRequest); - System.out.println("왜 안돼ㅐ"); } private void logRequest(ContentCachingRequestWrapper request) { - System.out.println("되는거 맞아?"); String ip = request.getRemoteAddr(); String method = request.getMethod(); String uri = request.getRequestURI(); diff --git a/src/main/java/com/aolda/itda/service/AuthService.java b/src/main/java/com/aolda/itda/service/AuthService.java index 6a25ebc..8bc6836 100644 --- a/src/main/java/com/aolda/itda/service/AuthService.java +++ b/src/main/java/com/aolda/itda/service/AuthService.java @@ -297,6 +297,31 @@ public class AuthService { } + public List<String> getAllProjects(String token) throws JsonProcessingException { + String url = keystone + "/projects"; + HttpHeaders headers = new HttpHeaders(); + headers.set("X-Auth-Token", token); + HttpEntity<String> requestEntity = new HttpEntity<>(headers); + ResponseEntity<String> res; + try { + res = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class); + } catch (HttpClientErrorException.NotFound e) { + throw new CustomException(ErrorCode.INVALID_TOKEN); + } + + JsonNode node = objectMapper.readTree(res.getBody()); + ArrayNode arrayNode = (ArrayNode) node.get("projects"); + + List<String> lists = new ArrayList<>(); + + for (JsonNode assignment : arrayNode) { + lists.add(assignment.path("id").asText()); + } + + return lists; + + } + public void validateProjectAuth(List<String> projects, String projectId) { if (projects != null && !projects.contains(projectId)) { throw new CustomException(ErrorCode.UNAUTHORIZED_USER); -- GitLab