matthc/privileges

此包已被废弃,不再维护。未建议替代包。

laravel 的小型角色权限集成

0.2.0 2016-05-14 14:08 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:54:40 UTC


README

#Privileges

SensioLabsInsight

这是一个为 laravel 项目的小型角色权限集成。我知道 Entrust 存在,但我想亲自试一试。

##安装 将包下载到 vendor 文件夹

composer require matthc/privileges

将服务提供者添加到 config/app.php

...
MatthC\Privileges\PrivilegeServiceProvider::class,
...

发布文件

$ php artisan vendor:publish

运行迁移

$ php artisan migrate

调整 config/privileges.php 中的设置,并运行以下命令以添加所需的角色和权限。

$ php artisan privileges:db:seed

如果您想添加具有特定角色的用户,请运行以下命令

$ php artisan privileges:db:users

将特质添加到 usermodel

use MatthC\Privileges\Traits\PrivilegeUserTrait;

class User extends Authenticatable
{
    use PrivilegeUserTrait;
    
    ...
}

##使用

###用户有角色 检查用户是否具有特定角色

//one role
$user->hasRole('admin'); //returns true/false

//multiple roles
$user->hasRole(['admin', 'author']); //returns true if the user has one of these roles

//user must have all roles
$user->hasRole(['admin', 'author'], true);

###用户有权限 检查用户是否具有特定权限

//one permission
$user->can('create_post');

//multiple permissions
$user->can(['create_post', 'update_post']);

//all true
$user->can(['create_post', 'update_post'], true);

##中间件 您还可以使用预定义的中间件。将以下行添加到 app/Http/kernel.php 中的路由中间件数组

protected $routeMiddleware = [
        ...
        'role' => \MatthC\Privileges\Middleware\PrivilegeRoleMiddleware::class,
        'permission' => \MatthC\Privileges\Middleware\PrivilegePermissionMiddleware::class,
    ];

示例用法

Route::group(['middleware' => ['role:admin']], function() {
    //add routes
});