gc-guide-api/src/main/java/com/gcsc/guide/controller/AdminUserController.java

68 lines
2.2 KiB
Java
Raw Normal View 히스토리

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));
}
}