Skip to content
Snippets Groups Projects
Commit 1b407531 authored by 천 진강's avatar 천 진강
Browse files

feat: 메인 페이지 및 접근 가능 프로젝트 조회

parent 62f400df
No related branches found
No related tags found
2 merge requests!15Feat/certificate,!14Feat/main 자잘한 변경 사항들
...@@ -59,7 +59,8 @@ public class AuthInterceptor implements HandlerInterceptor { ...@@ -59,7 +59,8 @@ public class AuthInterceptor implements HandlerInterceptor {
/* 프로젝트 리스트 조회 */ /* 프로젝트 리스트 조회 */
List<String> projects; List<String> projects;
if (authService.isAdmin(Map.of("id", userId, "token", token))) { if (authService.isAdmin(Map.of("id", userId, "token", token))) {
projects = authService.getAllProjects(token); projects = authService.getAllProjects(token).stream().map(IdAndNameDTO::getId)
.toList();
} }
else { else {
......
package com.aolda.itda.controller.main;
import com.aolda.itda.service.main.MainService;
import com.fasterxml.jackson.core.JsonProcessingException;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
public class MainController {
private final MainService mainService;
@GetMapping("/projects")
public ResponseEntity<Object> projects(HttpServletRequest request) throws JsonProcessingException {
return ResponseEntity.ok(mainService.getAllProjects((Map<String, String>) request.getSession().getAttribute("user")));
}
@GetMapping("/main")
public ResponseEntity<Object> mainInfo(@RequestParam String projectId, HttpServletRequest request) {
return ResponseEntity.ok(mainService.getMainInfo(projectId, (List<String>) request.getAttribute("projects")));
}
}
package com.aolda.itda.dto.main;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MainInfoDTO {
private Long routing;
private Long forwarding;
private Long certificate;
}
...@@ -297,7 +297,7 @@ public class AuthService { ...@@ -297,7 +297,7 @@ public class AuthService {
} }
public List<String> getAllProjects(String token) throws JsonProcessingException { public List<IdAndNameDTO> getAllProjects(String token) throws JsonProcessingException {
String url = keystone + "/projects"; String url = keystone + "/projects";
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("X-Auth-Token", token); headers.set("X-Auth-Token", token);
...@@ -312,10 +312,12 @@ public class AuthService { ...@@ -312,10 +312,12 @@ public class AuthService {
JsonNode node = objectMapper.readTree(res.getBody()); JsonNode node = objectMapper.readTree(res.getBody());
ArrayNode arrayNode = (ArrayNode) node.get("projects"); ArrayNode arrayNode = (ArrayNode) node.get("projects");
List<String> lists = new ArrayList<>(); List<IdAndNameDTO> lists = new ArrayList<>();
for (JsonNode assignment : arrayNode) { for (JsonNode assignment : arrayNode) {
lists.add(assignment.path("id").asText()); String projectId = assignment.path("id").asText();
String projectName = assignment.path("name").asText();
lists.add(new IdAndNameDTO(projectId, projectName));
} }
return lists; return lists;
......
package com.aolda.itda.service.main;
import com.aolda.itda.dto.PageResp;
import com.aolda.itda.dto.auth.IdAndNameDTO;
import com.aolda.itda.dto.main.MainInfoDTO;
import com.aolda.itda.repository.certificate.CertificateRepository;
import com.aolda.itda.repository.forwarding.ForwardingRepository;
import com.aolda.itda.repository.routing.RoutingRepository;
import com.aolda.itda.service.AuthService;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Service
@Transactional
@RequiredArgsConstructor
public class MainService {
private final AuthService authService;
private final RoutingRepository routingRepository;
private final ForwardingRepository forwardingRepository;
private final CertificateRepository certificateRepository;
/* 메인 페이지에 필요한 정보 반환 */
public MainInfoDTO getMainInfo(String projectId, List<String> projects) {
/* 프로젝트 권한 검증 */
authService.validateProjectAuth(projects, projectId);
/* 카운팅 */
Long routing = (long) routingRepository.findByProjectIdAndIsDeleted(projectId, false).size();
Long forwarding = (long) forwardingRepository.findByProjectIdAndIsDeleted(projectId, false).size();
Long certificate = 0L;
return MainInfoDTO.builder()
.routing(routing)
.forwarding(forwarding)
.certificate(certificate)
.build();
}
/* 접근 가능한 프로젝트 조회 */
public PageResp<IdAndNameDTO> getAllProjects(Map<String, String> user) throws JsonProcessingException {
List<IdAndNameDTO> projects;
if (authService.isAdmin(user)) {
projects = authService.getAllProjects(user.get("token"));
}
else {
projects = authService.getProjectsWithUser(user);
}
return PageResp.<IdAndNameDTO>builder()
.contents(projects).build();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment