deploy: 2026-03-11 배포

- feat: MNG→SAM 자동 로그인 토큰 (LoginToken 모델 도메인 매핑)
- feat: 사용자/역할/부서 관리 개선 (Controller, Service, View)
- feat: 메뉴 관리 개선 (MenuService, menu-tree.js)
- fix: 문서 뷰어, FCM 토큰, 방화셔터 도면, 테넌트 테이블 뷰 수정
This commit is contained in:
2026-03-11 02:12:51 +09:00
parent d068a8e55c
commit dfe97308f3
21 changed files with 961 additions and 352 deletions

View File

@@ -178,6 +178,54 @@ public function restore(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->departmentService->deleteDepartment($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->departmentService->restoreDepartment($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) {
if ($this->departmentService->forceDeleteDepartment($id)) {
$deleted++;
}
}
return response()->json(['success' => true, 'message' => "{$deleted}개 부서가 영구 삭제되었습니다.", 'deleted' => $deleted]);
}
/**
* 부서 영구 삭제
*/