permissionService->getPermissions( $request->all(), $request->input('per_page', 20) ); // HTMX 요청 시 부분 HTML 반환 if ($request->header('HX-Request')) { return view('permissions.partials.table', compact('permissions')); } // 일반 요청 시 JSON 반환 return response()->json([ 'success' => true, 'data' => $permissions->items(), 'meta' => [ 'current_page' => $permissions->currentPage(), 'total' => $permissions->total(), 'per_page' => $permissions->perPage(), 'last_page' => $permissions->lastPage(), ], ]); } /** * 권한 생성 */ public function store(StorePermissionRequest $request): JsonResponse { try { $permission = $this->permissionService->createPermission($request->validated()); return response()->json([ 'success' => true, 'message' => '권한이 생성되었습니다.', 'data' => $permission, ], 201); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => $e->getMessage(), ], 400); } } /** * 권한 상세 조회 */ public function show(int $id): JsonResponse { $permission = $this->permissionService->getPermissionById($id); if (! $permission) { return response()->json([ 'success' => false, 'message' => '권한을 찾을 수 없습니다.', ], 404); } return response()->json([ 'success' => true, 'data' => $permission, ]); } /** * 권한 수정 */ public function update(UpdatePermissionRequest $request, int $id): JsonResponse { try { $permission = $this->permissionService->updatePermission($id, $request->validated()); return response()->json([ 'success' => true, 'message' => '권한이 수정되었습니다.', 'data' => $permission, ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => $e->getMessage(), ], 400); } } /** * 권한 삭제 */ public function destroy(int $id): JsonResponse { try { $this->permissionService->deletePermission($id); return response()->json([ 'success' => true, 'message' => '권한이 삭제되었습니다.', ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => $e->getMessage(), ], 400); } } }