权限管理 添加插件权限
This commit is contained in:
parent
e54d9bbc45
commit
571eba695d
|
|
@ -34,7 +34,8 @@ class AdminRoleController extends Controller
|
|||
{
|
||||
$permissionRepo = (new PermissionRepo());
|
||||
$data = [
|
||||
'permissions' => $permissionRepo->getAllPermissions(),
|
||||
'core_permissions' => $permissionRepo->getRoleCorePermissions(),
|
||||
'plugin_permissions' => $permissionRepo->getRolePluginPermissions(),
|
||||
];
|
||||
|
||||
$data = hook_filter('admin.admin_role.create.data', $data);
|
||||
|
|
@ -48,7 +49,8 @@ class AdminRoleController extends Controller
|
|||
$role = Role::query()->findOrFail($id);
|
||||
$permissionRepo = (new PermissionRepo())->setRole($role);
|
||||
$data = [
|
||||
'permissions' => $permissionRepo->getAllPermissions(),
|
||||
'core_permissions' => $permissionRepo->getRoleCorePermissions(),
|
||||
'plugin_permissions' => $permissionRepo->getRolePluginPermissions(),
|
||||
'role' => $role,
|
||||
];
|
||||
$data = hook_filter('admin.admin_role.edit.data', $data);
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class PermissionRepo
|
|||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getAllPermissions(): array
|
||||
public function getRoleCorePermissions(): array
|
||||
{
|
||||
$corePermissions = [
|
||||
['title' => trans('admin/common.order'), 'permissions' => $this->getOrderPermissions()],
|
||||
|
|
@ -73,11 +73,23 @@ class PermissionRepo
|
|||
];
|
||||
|
||||
$corePermissions = hook_filter('role.permissions.all', $corePermissions);
|
||||
|
||||
return $corePermissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件权限
|
||||
*
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getRolePluginPermissions(): array
|
||||
{
|
||||
$pluginPermissions = hook_filter('role.permissions.plugin', []);
|
||||
|
||||
$pluginPermissions = $this->handlePluginPermission($pluginPermissions);
|
||||
|
||||
return array_merge($corePermissions, $pluginPermissions);
|
||||
return $pluginPermissions;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -13,13 +13,35 @@
|
|||
<el-form-item label="{{ __('admin/admin_roles.permission') }}" prop="roles">
|
||||
<div class="roles-wrap border w-max-900">
|
||||
<div class="bg-dark p-2 text-dark bg-opacity-10 px-2">
|
||||
<el-button size="small" @click="updateAllState(true)">@lang('admin/admin_roles.select_all')</el-button>
|
||||
<el-button size="small" @click="updateAllState(false)">@lang('admin/admin_roles.unselect_all')</el-button>
|
||||
<el-button size="small" @click="updateAllState('permissions', true)">@lang('admin/admin_roles.select_all')</el-button>
|
||||
<el-button size="small" @click="updateAllState('permissions', false)">@lang('admin/admin_roles.unselect_all')</el-button>
|
||||
</div>
|
||||
<div v-for="role, index in form.permissions" :key="index">
|
||||
<div class="bg-light px-2 d-flex">
|
||||
@{{ role.title }}
|
||||
<div class="row-update ms-2 link-secondary">[<span @click="updateState(true, index)">{{ __('common.select_all') }}</span> / <span @click="updateState(false, index)">{{ __('common.cancel') }}</span>]</div>
|
||||
<div class="row-update ms-2 link-secondary">[<span @click="updateState('permissions', true, index)">{{ __('common.select_all') }}</span> / <span @click="updateState('permissions', false, index)">{{ __('common.cancel') }}</span>]</div>
|
||||
</div>
|
||||
<div class="role-methods">
|
||||
<div class="d-flex flex-wrap px-3">
|
||||
<div v-for="method,index in role.permissions" class="me-3">
|
||||
<el-checkbox class="text-dark" v-model="method.selected">@{{ method.name }}</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="{{ __('admin/admin_roles.plugin_permission') }}" prop="roles">
|
||||
<div class="roles-wrap border w-max-900">
|
||||
<div class="bg-dark p-2 text-dark bg-opacity-10 px-2">
|
||||
<el-button size="small" @click="updateAllState('plugin_permissions', true)">@lang('admin/admin_roles.select_all')</el-button>
|
||||
<el-button size="small" @click="updateAllState('plugin_permissions', false)">@lang('admin/admin_roles.unselect_all')</el-button>
|
||||
</div>
|
||||
<div v-for="role, index in form.plugin_permissions" :key="index">
|
||||
<div class="bg-light px-2 d-flex">
|
||||
@{{ role.title }}
|
||||
<div class="row-update ms-2 link-secondary">[<span @click="updateState('plugin_permissions', true, index)">{{ __('common.select_all') }}</span> / <span @click="updateState('plugin_permissions', false, index)">{{ __('common.cancel') }}</span>]</div>
|
||||
</div>
|
||||
<div class="role-methods">
|
||||
<div class="d-flex flex-wrap px-3">
|
||||
|
|
@ -50,8 +72,8 @@
|
|||
form: {
|
||||
id: @json($role->id ?? null),
|
||||
name: @json($role->name ?? ''),
|
||||
permissions: @json($permissions ?? []),
|
||||
plugins_permissions: @json($plugins_permissions ?? []),
|
||||
permissions: @json($core_permissions ?? []),
|
||||
plugin_permissions: @json($plugin_permissions ?? []),
|
||||
},
|
||||
|
||||
source: {
|
||||
|
|
@ -71,12 +93,12 @@
|
|||
},
|
||||
|
||||
methods: {
|
||||
updateState(type, index) {
|
||||
this.form.permissions[index].permissions.map(e => e.selected = !!type)
|
||||
updateState(key, type, index) {
|
||||
this.form[key][index].permissions.map(e => e.selected = !!type)
|
||||
},
|
||||
|
||||
updateAllState(type) {
|
||||
this.form.permissions.forEach(e => {
|
||||
updateAllState(key, type) {
|
||||
this.form[key].forEach(e => {
|
||||
e.permissions.forEach(method => {
|
||||
method.selected = !!type
|
||||
});
|
||||
|
|
|
|||
|
|
@ -15,5 +15,6 @@ return [
|
|||
'role_name' => 'Rollenname',
|
||||
'role_management' => 'Rollenverwaltung',
|
||||
'permission' => 'Erlaubnis',
|
||||
'plugin_permission' => 'Plugin permissions',
|
||||
'error_roles' => 'Bitte mindestens eine Rolle auswählen',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -16,5 +16,6 @@ return [
|
|||
'role_name' => 'Role Name',
|
||||
'role_management' => 'Role Management',
|
||||
'permission' => 'Permission',
|
||||
'plugin_permission' => 'Plugin permissions',
|
||||
'error_roles' => 'Please select at least one role',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,5 +15,6 @@ return [
|
|||
'role_name' => 'Nombre de rol',
|
||||
'role_management' => 'gestión de roles',
|
||||
'permission' => 'permiso',
|
||||
'plugin_permission' => 'Plugin permissions',
|
||||
'error_roles' => 'Seleccione al menos un rol',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,5 +15,6 @@ return [
|
|||
'role_name' => 'nom du rôle',
|
||||
'role_management' => 'gestion des rôles',
|
||||
'permission' => 'autorisation',
|
||||
'plugin_permission' => 'Plugin permissions',
|
||||
'error_roles' => 'Veuillez sélectionner au moins un rôle',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,5 +15,6 @@ return [
|
|||
'role_name' => '役割名',
|
||||
'role_management' => '役割管理',
|
||||
'permission' => '許可',
|
||||
'plugin_permission' => 'プラグインのパーミッション',
|
||||
'error_roles' => '少なくとも 1 つのロールを選択してください',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,5 +15,6 @@ return [
|
|||
'role_name' => 'имя роли',
|
||||
'role_management' => 'управление ролями',
|
||||
'permission' => 'разрешение',
|
||||
'plugin_permission' => 'Plugin permissions',
|
||||
'error_roles' => 'Выберите хотя бы одну роль',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -16,5 +16,6 @@ return [
|
|||
'role_management' => '角色管理',
|
||||
'role' => '角色',
|
||||
'permission' => '权限',
|
||||
'plugin_permission' => '插件权限',
|
||||
'error_roles' => '请至少选择一个角色',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,5 +15,6 @@ return [
|
|||
'role_name' => '角色名稱',
|
||||
'role_management' => '角色管理',
|
||||
'permission' => '權限',
|
||||
'plugin_permission' => '插件權限',
|
||||
'error_roles' => '請至少選擇一個角色',
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in New Issue