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