Files
KnowledgeBase/app/Policies/RolePolicy.php
lizhuoran b3f319fc48 refactor(权限): 统一权限命名规范并精简权限数量
- 移除冗余的 viewAny 权限,统一使用 view 权限
- 简化权限描述,去掉「列表」和「详情」的区分
- 权限数量从 45 个精简到 32 个
- 更新 RolePolicy 使用统一的 role.view 权限
- 创建迁移脚本自动更新现有权限并合并关联
- 验证所有角色权限分配正确(super-admin: 32, admin: 28, user: 6)
2026-03-12 13:15:17 +08:00

73 lines
1.3 KiB
PHP

<?php
namespace App\Policies;
use App\Models\User;
use Spatie\Permission\Models\Role;
class RolePolicy
{
/**
* 查看角色列表
*/
public function viewAny(User $user): bool
{
return $user->can('role.view');
}
/**
* 查看角色详情
*/
public function view(User $user, Role $role): bool
{
return $user->can('role.view');
}
/**
* 创建角色
*/
public function create(User $user): bool
{
return $user->can('role.create');
}
/**
* 编辑角色
*/
public function update(User $user, Role $role): bool
{
// super-admin 角色不能被编辑
if ($role->name === 'super-admin') {
return false;
}
return $user->can('role.update');
}
/**
* 删除角色
*/
public function delete(User $user, Role $role): bool
{
// super-admin 角色不能被删除
if ($role->name === 'super-admin') {
return false;
}
// 检查是否有关联用户
if ($role->users()->count() > 0) {
return false;
}
return $user->can('role.delete');
}
/**
* 批量删除角色
*/
public function deleteAny(User $user): bool
{
return $user->can('role.delete');
}
}