lotteryAdmin(); abort_if($admin === null, 401); if (! $admin_role->isAgentScoped()) { abort(404); } $denied = AgentRoleAuthorization::denyUnlessRoleManageable($admin, $admin_role); if ($denied !== null) { return $denied; } if ($admin_role->isReadOnlyTemplate()) { return AgentRoleAuthorization::denyUnlessRoleManageable($admin, $admin_role); } $slugs = array_values(array_unique($request->validated('permission_slugs'))); $before = AdminRoleApiPresenter::item($admin_role); $role = $service->syncPermissions($admin, $admin_role, $slugs); AuditLogger::recordForAdmin( $admin, $request, 'agent', 'agent_role.sync_permissions', 'admin_role', (string) $role->id, $before, AdminRoleApiPresenter::item($role), ); return ApiResponse::success(AdminRoleApiPresenter::item($role)); } }