- 新增角色菜单关联模型、控制器、请求验证和业务逻辑 - 新增用户角色关联模型、控制器、请求验证和业务逻辑 - 更新系统角色模型,增加与用户和菜单的关联 - 更新用户模型,增加与角色的关联和相关方法 - 在路由文件中添加新功能的路由定义
213 lines
6.5 KiB
PHP
213 lines
6.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Admin\System;
|
|
|
|
use App\Http\Requests\BaseRequest;
|
|
|
|
/**
|
|
* 系统用户角色关联请求验证
|
|
*/
|
|
class SystemUserRoleRequest extends BaseRequest
|
|
{
|
|
/**
|
|
* 获取特定验证规则
|
|
*/
|
|
protected function getSpecificRules(): array
|
|
{
|
|
$action = $this->route()->getActionMethod();
|
|
|
|
return match($action) {
|
|
'list' => $this->listRules(),
|
|
'getUserRoles' => $this->getUserRolesRules(),
|
|
'getRoleUsers' => $this->getRoleUsersRules(),
|
|
'getUserRoleDetails' => $this->getUserRoleDetailsRules(),
|
|
'setUserRoles' => $this->setUserRolesRules(),
|
|
'setRoleUsers' => $this->setRoleUsersRules(),
|
|
'batchSetUserRoles' => $this->batchSetUserRolesRules(),
|
|
'hasRole' => $this->hasRoleRules(),
|
|
'hasRoleCode' => $this->hasRoleCodeRules(),
|
|
'clearUserRoles' => $this->clearUserRolesRules(),
|
|
'clearRoleUsers' => $this->clearRoleUsersRules(),
|
|
default => []
|
|
};
|
|
}
|
|
|
|
/**
|
|
* 获取分页验证规则
|
|
*/
|
|
private function getPaginationRules(): array
|
|
{
|
|
return [
|
|
'page' => ['sometimes', 'integer', 'min:1'],
|
|
'page_size' => ['sometimes', 'integer', 'min:1', 'max:100'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 列表查询验证规则
|
|
*/
|
|
private function listRules(): array
|
|
{
|
|
return array_merge($this->getPaginationRules(), [
|
|
'user_id' => ['sometimes', 'integer', 'exists:system_users,id'],
|
|
'role_id' => ['sometimes', 'integer', 'exists:system_role,id'],
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 获取用户角色验证规则
|
|
*/
|
|
private function getUserRolesRules(): array
|
|
{
|
|
return [
|
|
'user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 获取角色用户验证规则
|
|
*/
|
|
private function getRoleUsersRules(): array
|
|
{
|
|
return [
|
|
'role_id' => ['required', 'integer', 'exists:system_role,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 获取用户角色详情验证规则
|
|
*/
|
|
private function getUserRoleDetailsRules(): array
|
|
{
|
|
return [
|
|
'user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 设置用户角色验证规则
|
|
*/
|
|
private function setUserRolesRules(): array
|
|
{
|
|
return [
|
|
'user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
'role_ids' => ['sometimes', 'array'],
|
|
'role_ids.*' => ['integer', 'exists:system_role,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 设置角色用户验证规则
|
|
*/
|
|
private function setRoleUsersRules(): array
|
|
{
|
|
return [
|
|
'role_id' => ['required', 'integer', 'exists:system_role,id'],
|
|
'user_ids' => ['sometimes', 'array'],
|
|
'user_ids.*' => ['integer', 'exists:system_users,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 批量设置用户角色验证规则
|
|
*/
|
|
private function batchSetUserRolesRules(): array
|
|
{
|
|
return [
|
|
'user_role_data' => ['required', 'array', 'min:1'],
|
|
'user_role_data.*.user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
'user_role_data.*.role_ids' => ['sometimes', 'array'],
|
|
'user_role_data.*.role_ids.*' => ['integer', 'exists:system_role,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 检查用户角色验证规则
|
|
*/
|
|
private function hasRoleRules(): array
|
|
{
|
|
return [
|
|
'user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
'role_id' => ['required', 'integer', 'exists:system_role,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 检查用户角色编码验证规则
|
|
*/
|
|
private function hasRoleCodeRules(): array
|
|
{
|
|
return [
|
|
'user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
'role_code' => ['required', 'string', 'exists:system_role,code'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 清除用户角色验证规则
|
|
*/
|
|
private function clearUserRolesRules(): array
|
|
{
|
|
return [
|
|
'user_id' => ['required', 'integer', 'exists:system_users,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 清除角色用户验证规则
|
|
*/
|
|
private function clearRoleUsersRules(): array
|
|
{
|
|
return [
|
|
'role_id' => ['required', 'integer', 'exists:system_role,id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 获取验证错误消息
|
|
*/
|
|
protected function getSpecificMessages(): array
|
|
{
|
|
return [
|
|
'user_id.required' => '用户ID不能为空',
|
|
'user_id.integer' => '用户ID必须是整数',
|
|
'user_id.exists' => '指定的用户不存在',
|
|
'role_id.required' => '角色ID不能为空',
|
|
'role_id.integer' => '角色ID必须是整数',
|
|
'role_id.exists' => '指定的角色不存在',
|
|
'role_code.required' => '角色编码不能为空',
|
|
'role_code.string' => '角色编码必须是字符串',
|
|
'role_code.exists' => '指定的角色编码不存在',
|
|
'role_ids.array' => '角色ID列表必须是数组',
|
|
'role_ids.*.integer' => '角色ID必须是整数',
|
|
'role_ids.*.exists' => '指定的角色不存在',
|
|
'user_ids.array' => '用户ID列表必须是数组',
|
|
'user_ids.*.integer' => '用户ID必须是整数',
|
|
'user_ids.*.exists' => '指定的用户不存在',
|
|
'user_role_data.required' => '用户角色数据不能为空',
|
|
'user_role_data.array' => '用户角色数据必须是数组',
|
|
'user_role_data.min' => '至少需要一组用户角色数据',
|
|
'user_role_data.*.user_id.required' => '用户ID不能为空',
|
|
'user_role_data.*.user_id.integer' => '用户ID必须是整数',
|
|
'user_role_data.*.user_id.exists' => '指定的用户不存在',
|
|
'user_role_data.*.role_ids.array' => '角色ID列表必须是数组',
|
|
'user_role_data.*.role_ids.*.integer' => '角色ID必须是整数',
|
|
'user_role_data.*.role_ids.*.exists' => '指定的角色不存在',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 字段别名
|
|
*/
|
|
public function attributes(): array
|
|
{
|
|
return [
|
|
'user_id' => '用户',
|
|
'role_id' => '角色',
|
|
'role_code' => '角色编码',
|
|
'role_ids' => '角色列表',
|
|
'user_ids' => '用户列表',
|
|
'user_role_data' => '用户角色数据',
|
|
];
|
|
}
|
|
}
|