권한 테스트 api 수정

This commit is contained in:
2025-12-12 10:02:08 +09:00
parent 79267e82d7
commit 970d08ba44
5 changed files with 74 additions and 59 deletions

View File

@@ -2,8 +2,9 @@ package com.kamco.cd.kamcoback.auth;
import com.kamco.cd.kamcoback.postgres.entity.MemberEntity;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
public class CustomUserDetails implements UserDetails {
@@ -16,7 +17,7 @@ public class CustomUserDetails implements UserDetails {
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Collections.emptyList();
return List.of(new SimpleGrantedAuthority("ROLE_" + member.getUserRole()));
}
@Override

View File

@@ -7,9 +7,9 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
public enum RoleType implements EnumType {
ROLE_ADMIN("관리자"),
ROLE_LABELER("라벨러"),
ROLE_REVIEWER("검수자");
ADMIN("관리자"),
LABELER("라벨러"),
REVIEWER("검수자");
private final String desc;

View File

@@ -42,13 +42,26 @@ public class SecurityConfig {
customAuthenticationProvider) // 로그인 패스워드 비교방식 스프링 기본 Provider 사용안함 커스텀 사용
.authorizeHttpRequests(
auth ->
auth.requestMatchers(HttpMethod.OPTIONS, "/**")
auth
// ADMIN만 접근
.requestMatchers("/api/test/admin")
.hasRole("ADMIN")
// ADMIN, LABELER 접근
.requestMatchers("/api/test/label")
.hasAnyRole("ADMIN", "LABELER")
// ADMIN, REVIEWER 접근
.requestMatchers("/api/test/review")
.hasAnyRole("ADMIN", "REVIEWER")
.requestMatchers(HttpMethod.OPTIONS, "/**")
.permitAll() // preflight 허용
.requestMatchers(
"/api/auth/signin",
"/api/auth/refresh",
"/swagger-ui/**",
"/api/members/{memberId}/password",
"/api/members/*/password",
"/v3/api-docs/**")
.permitAll()
.anyRequest()

View File

@@ -88,7 +88,7 @@ public class MembersDto {
public static class SearchReq {
@Schema(
description = "전체, 관리자(ROLE_ADMIN), 라벨러(ROLE_LABELER), 검수자(ROLE_REVIEWER)",
description = "전체, 관리자(ADMIN), 라벨러(LABELER), 검수자(REVIEWER)",
example = "")
private String userRole;
@@ -111,7 +111,7 @@ public class MembersDto {
@Setter
public static class AddReq {
@Schema(description = "관리자 유형", example = "ROLE_ADMIN")
@Schema(description = "관리자 유형", example = "ADMIN")
@NotBlank
@Size(max = 50)
private String userRole;

View File

@@ -1,5 +1,6 @@
package com.kamco.cd.kamcoback.test;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -30,8 +31,8 @@ public class TestApiController {
content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
})
@GetMapping("/admin")
public String admin() {
return "I am administrator";
public ApiResponseDto<String> admin() {
return ApiResponseDto.ok("I am administrator");
}
@Operation(summary = "label test", description = "label test api")
@@ -46,8 +47,8 @@ public class TestApiController {
content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
})
@GetMapping("/label")
public String label() {
return "Labeling is available.";
public ApiResponseDto<String> label() {
return ApiResponseDto.ok("Labeling is available.");
}
@Operation(summary = "review test", description = "review test api")
@@ -62,7 +63,7 @@ public class TestApiController {
content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
})
@GetMapping("/review")
public String review() {
return "Review is available.";
public ApiResponseDto<String> review() {
return ApiResponseDto.ok("Review is available.");
}
}