68 lines
2.2 KiB
Java
68 lines
2.2 KiB
Java
|
|
package com.gcsc.guide.controller;
|
||
|
|
|
||
|
|
import com.gcsc.guide.dto.UpdateRolesRequest;
|
||
|
|
import com.gcsc.guide.dto.UserResponse;
|
||
|
|
import com.gcsc.guide.service.UserService;
|
||
|
|
import jakarta.validation.Valid;
|
||
|
|
import lombok.RequiredArgsConstructor;
|
||
|
|
import org.springframework.http.ResponseEntity;
|
||
|
|
import org.springframework.web.bind.annotation.*;
|
||
|
|
|
||
|
|
import java.util.List;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 관리자 사용자 관리 API
|
||
|
|
*/
|
||
|
|
@RestController
|
||
|
|
@RequestMapping("/api/admin/users")
|
||
|
|
@RequiredArgsConstructor
|
||
|
|
public class AdminUserController {
|
||
|
|
|
||
|
|
private final UserService userService;
|
||
|
|
|
||
|
|
/** 전체 사용자 목록 조회 (status 필터 선택) */
|
||
|
|
@GetMapping
|
||
|
|
public ResponseEntity<List<UserResponse>> getUsers(
|
||
|
|
@RequestParam(required = false) String status) {
|
||
|
|
return ResponseEntity.ok(userService.getUsers(status));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 사용자 승인 (PENDING → ACTIVE) */
|
||
|
|
@PutMapping("/{id}/approve")
|
||
|
|
public ResponseEntity<UserResponse> approveUser(@PathVariable Long id) {
|
||
|
|
return ResponseEntity.ok(userService.approveUser(id));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 사용자 거절 (PENDING → REJECTED) */
|
||
|
|
@PutMapping("/{id}/reject")
|
||
|
|
public ResponseEntity<UserResponse> rejectUser(@PathVariable Long id) {
|
||
|
|
return ResponseEntity.ok(userService.rejectUser(id));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 사용자 비활성화 (ACTIVE → DISABLED) */
|
||
|
|
@PutMapping("/{id}/disable")
|
||
|
|
public ResponseEntity<UserResponse> disableUser(@PathVariable Long id) {
|
||
|
|
return ResponseEntity.ok(userService.disableUser(id));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 사용자 롤 업데이트 */
|
||
|
|
@PutMapping("/{id}/roles")
|
||
|
|
public ResponseEntity<UserResponse> updateUserRoles(
|
||
|
|
@PathVariable Long id,
|
||
|
|
@Valid @RequestBody UpdateRolesRequest request) {
|
||
|
|
return ResponseEntity.ok(userService.updateUserRoles(id, request.roleIds()));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 관리자 권한 부여 */
|
||
|
|
@PostMapping("/{id}/admin")
|
||
|
|
public ResponseEntity<UserResponse> grantAdmin(@PathVariable Long id) {
|
||
|
|
return ResponseEntity.ok(userService.grantAdmin(id));
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 관리자 권한 해제 */
|
||
|
|
@DeleteMapping("/{id}/admin")
|
||
|
|
public ResponseEntity<UserResponse> revokeAdmin(@PathVariable Long id) {
|
||
|
|
return ResponseEntity.ok(userService.revokeAdmin(id));
|
||
|
|
}
|
||
|
|
}
|