Files
lotteryLaravel/app/Http/Controllers/Api/V1/Admin/User/AdminRoleDestroyController.php

46 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers\Api\V1\Admin\User;
use App\Models\AdminRole;
use App\Lottery\ErrorCode;
use App\Support\ApiResponse;
use Illuminate\Http\Request;
use App\Services\AuditLogger;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Support\AdminRoleApiPresenter;
final class AdminRoleDestroyController extends Controller
{
public function __invoke(Request $request, AdminRole $admin_role): JsonResponse
{
if ($admin_role->slug === AdminRole::ROLE_SUPER_ADMIN) {
return ApiResponse::error('不能删除超级管理员角色', ErrorCode::ValidationFailed->value, null, 422);
}
if ((bool) $admin_role->is_system) {
return ApiResponse::error('系统内置角色不允许删除', ErrorCode::ValidationFailed->value, null, 422);
}
if ($admin_role->assignedUserCount() > 0) {
return ApiResponse::error('该角色下仍有关联管理员,不能删除', ErrorCode::ValidationFailed->value, null, 422);
}
$before = AdminRoleApiPresenter::item($admin_role);
$id = (int) $admin_role->id;
$admin_role->delete();
AuditLogger::recordForAdmin(
$request->lotteryAdmin(),
$request,
'system',
'admin_role.delete',
'admin_role',
(string) $id,
$before,
null,
);
return ApiResponse::success(['deleted' => true, 'id' => $id]);
}
}