diff --git a/src/main/java/com/aolda/itda/config/AuthInterceptor.java b/src/main/java/com/aolda/itda/config/AuthInterceptor.java index 3a95f8a4e329d27457a75d18fac600f6fe84a836..b0767e3536368cbba238138a57eb5fe9e61a8500 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 0dd73b1b546e2f8f11829424f62d6783681a187e..49264ec5197d646154309cb91c33ce7cf618267e 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 6a25ebc9aba5f91ec4159eb77b75ccf2998ff098..8bc68362fce6fff386e72d6a4ac4f06687cb1972 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);