hexters / rolevel
1.1.0
2020-03-05 03:38 UTC
README
用于在 laravel 中处理角色和权限的包
需求
- Bootstrap 4
安装
您可以通过 composer 安装此包
$ composer require hexters/rolevel
发布供应商
$ php artisan vendor:publish --tag=rolevel
将特性和到您的 User 模型
<?php
namespace App;
. . .
use Hexters\Rolevel\RolevelModelTrait;
class User extends Authenticatable {
use Notifiable, RolevelModelTrait;
. . .
迁移 rolevel 数据库
$ php artisan migrate
入门
在 app/Roles/menu_and_permissions.php
文件中打开文件菜单和权限。您可以在该文件中设置菜单和权限,以便为您的应用程序模块提供访问权限,例如。
<?php
return [
[
'display' => 'Menu Access', // display name
'gate' => 'module.access.index', // must uniq
'url' => null, // URL can set null if menu have submenu
'classId' => '', // id attribute
'className' => '', // class style attribute
'classIcon' => '', // font icon code
/*
| ------ Submenu ------
*/
'childs' => [
[
'display' => 'Assign Permissions',
'gate' => 'module.access.assign.permission.index',
'url' => '/admin/assign/permission',
'classId' => '',
'className' => '',
'classIcon' => '',
'permissions' => [
[
'gate' => 'module.access.assign.permission.show',
'name' => 'Detail Permissions', // title
'description' => 'Show detail for permission' // info description
],
[
// More permission...
]
]
],
[
// More submenu...
]
]
],
[
// More menu...
]
];
之后,请将脚本放入您的 master 布局中,以显示菜单访问权限。
@if(auth()->check())
@php
$permissions = auth()->user()->permissions();
$viewMenu = function($menus) use (&$viewMenu, $permissions) {
$html = '';
foreach($menus as $menu) {
if(in_array($menu['gate'], $permissions)) {
$html .= view('vendor.rolevel.menu', ['menu' => $menu, 'view' => $viewMenu]);
}
}
return $html;
}
@endphp
<ul>
<li><a href="{{ url('/dashboard') }}">Dashboard</a></li>
{!! $viewMenu(rolevel()->menus()) !!}
</ul>
@endif
@yield('content')
您可以为菜单自定义样式,打开 resources/views/vendor/rolevel/menu.blade.php
中的 blade 文件
您应该在之前为您的用户账户分配角色。
$user = App\User::find(1);
$role = App\Role::find(1);
$user->roles()->sync([ $role->id ], false);
在您的任何控制器中,您应该声明 Gate
以提供对您模块的访问权限,例如
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
class MenuAccessController extends Controller {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
/**
* Get module.access.assign.permission.index from gate in file menu_and_permissions.php
*/
if(Gate::denies('module.access.assign.permission.index')) abort(403);
return view('access.index');
}
. . .
在您的 blade 中
@can('module.access.assign.permission.store')
<a href="{{ url('/admin/account/create') }}">Create Account</a>
@endcan
// OR
if($user->can('module.access.assign.permission.store')) {
// Condition
}
检查 config/rolevel.php
中的配置文件,如果您有如下更改
- 模型角色位置
- 链接管理员前缀
- 访问模块分配的中间件
- 模板引用
默认情况下,您可以在 https://:8000/admin/roles
访问模块分配权限