Skip to content

Latest commit

 

History

History
107 lines (80 loc) · 2.17 KB

permission.md

File metadata and controls

107 lines (80 loc) · 2.17 KB

权限控制

laravel-admin已经内置了RBAC权限控制模块,展开左侧边栏的Auth,下面有用户、权限、角色三项的管理面板,权限控制的使用如下:

use Encore\Admin\Auth\Permission;

class PostController extends Controller
{
    public function create()
    {
        // 检查权限,有create-post权限的角色可以访问
        Permission::check('create-post');
        
        // 'editor', 'developer'两个角色可以访问
        Permission::allow(['editor', 'developer']);
        
        // 'editor', 'developer'两个角色禁止访问
        Permission::deny(['editor', 'developer']);
    }
}

其它使用方法

获取当前用户对象

Admin::user();

获取当前用户id

Admin::user()->id;

获取用户角色

Admin::user()->roles;

获取用户角色

Admin::user()->permissions;

用户是否某个角色

Admin::user()->isRole('developer');

是否有某个权限

Admin::user()->can('create-post');

是否没有某个权限

Admin::user()->cannot('delete-post');

是否是超级管理员

Admin::user()->isAdministrator();

是否是其中的角色

Admin::user()->inRoles(['editor', 'developer']);

权限中间件

可以在路由配置上结合权限中间件来控制路由的权限

// 允许administrator、editor两个角色访问group里面的路由
Route::group([
    'middleware' => 'admin.permission:allow,administrator,editor',
], function ($router) {

    $router->resource('users', UserController::class);
    ...
    
});

// 禁止developer、operator两个角色访问group里面的路由
Route::group([
    'middleware' => 'admin.permission:deny,developer,operator',
], function ($router) {

    $router->resource('users', UserController::class);
    ...
    
});

// 有edit-post、create-post、delete-post三个权限的用户可以访问group里面的路由
Route::group([
    'middleware' => 'admin.permission:check,edit-post,create-post,delete-post',
], function ($router) {

    $router->resource('posts', PostController::class);
    ...
    
});

权限中间件和其它中间件使用方法一致。