[ADD] 사용자 프로젝트 조회 API 추가 (ProjectPermissionController, Service)

main
bjkim 9 months ago
parent 2cf4c84860
commit 26842fe040

@ -5,12 +5,14 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import kr.re.etri.autoflow.entity.ProjectPermission;
import kr.re.etri.autoflow.entity.UserProjectMapEntity;
import kr.re.etri.autoflow.payload.request.UserPermissionRequest;
import kr.re.etri.autoflow.service.ProjectPermissionService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Set;
@RestController
@ -33,6 +35,15 @@ public class ProjectPermissionController {
return ResponseEntity.ok().build();
}
@Operation(summary = "사용자 프로젝트 조회", description = "특정 사용자가 속한 모든 프로젝트와 권한을 조회합니다.")
@GetMapping("/user/{userId}/projects")
public ResponseEntity<List<UserProjectMapEntity>> getUserProjects(
@Parameter(description = "유저 ID") @PathVariable Long userId
) {
List<UserProjectMapEntity> projects = projectPermissionService.getUserProjects(userId);
return ResponseEntity.ok(projects);
}
@Operation(summary = "사용자 권한 조회")
@GetMapping("/{projectId}/users/{userId}/permissions")
public ResponseEntity<Set<ProjectPermission>> getUserPermissions(

@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@Service
@ -49,6 +50,12 @@ public class ProjectPermissionService {
.orElse(Collections.emptySet());
}
@Transactional(readOnly = true)
public List<UserProjectMapEntity> getUserProjects(Long userId) {
User user = getUser(userId);
return userProjectMapRepository.findAllByUser(user);
}
public void updateUserPermissions(Long projectId, Long userId, Set<ProjectPermission> newPermissions) {
ProjectEntity project = getProject(projectId);
User user = getUser(userId);

Loading…
Cancel
Save