feat: [admin] 일괄 작업 및 작업 버튼 뱃지 UI 적용

- 사용자/부서/역할 페이지에 체크박스 선택 + 일괄 삭제/복원/영구삭제
- 사용자 테이블: 이메일을 이름 아래로 이동, 이메일 컬럼 제거
- 사용자/부서/테넌트 작업 버튼 뱃지 스타일로 변경

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-10 23:05:21 +09:00
parent 5f5eb12094
commit d7c4283b66
11 changed files with 478 additions and 98 deletions

View File

@@ -294,6 +294,57 @@ public function forceDestroy(Request $request, int $id): JsonResponse
]);
}
/**
* 일괄 삭제 (Soft Delete)
*/
public function bulkDelete(Request $request): JsonResponse
{
$validated = $request->validate(['ids' => 'required|array', 'ids.*' => 'integer']);
$deleted = 0;
foreach ($validated['ids'] as $id) {
if ($this->userService->deleteUser($id)) {
$deleted++;
}
}
return response()->json(['success' => true, 'message' => "{$deleted}명의 사용자가 삭제되었습니다.", 'deleted' => $deleted]);
}
/**
* 일괄 복원
*/
public function bulkRestore(Request $request): JsonResponse
{
$validated = $request->validate(['ids' => 'required|array', 'ids.*' => 'integer']);
$restored = 0;
foreach ($validated['ids'] as $id) {
if ($this->userService->restoreUser($id)) {
$restored++;
}
}
return response()->json(['success' => true, 'message' => "{$restored}명의 사용자가 복원되었습니다.", 'restored' => $restored]);
}
/**
* 일괄 영구삭제 (슈퍼관리자 전용)
*/
public function bulkForceDelete(Request $request): JsonResponse
{
$validated = $request->validate(['ids' => 'required|array', 'ids.*' => 'integer']);
$deleted = 0;
foreach ($validated['ids'] as $id) {
try {
$this->userService->forceDeleteUser($id);
$deleted++;
} catch (\Exception $e) {
continue;
}
}
return response()->json(['success' => true, 'message' => "{$deleted}명의 사용자가 영구 삭제되었습니다.", 'deleted' => $deleted]);
}
/**
* DEV 사이트 자동 로그인 토큰 생성
* MNG → DEV 자동 로그인용 One-Time Token 발급