ricardoriogo/permiso

简单的Laravel 5包,用于添加基于角色的权限

dev-master 2015-04-25 14:16 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:41:30 UTC


README

Build Status

这是一个简单的Laravel 5包,用于基于角色的权限。

安装

1. 添加到composer.json

composer.json文件的require键中添加以下内容

"ricardoriogo/permiso": "dev-master"

运行composer update命令。

$ composer update

2. 注册服务提供者

config/app.php中,将Riogo\Permiso\PermisoServiceProvider添加到$providers数组末尾。

    'providers' => array(
		'App\Providers\EventServiceProvider',
		'App\Providers\RouteServiceProvider',
        ...
        'Riogo\Permiso\PermisoServiceProvider',
    ),

3. 修改Auth配置

config/auth.php中,将driver配置改为permiso。默认情况下,Permiso将使用App\User模型。如果您使用其他模型进行身份验证,则需要修改config/auth.php中的model配置。

4. 将UserRoleTrait添加到您的auth模型

在您的auth模型中添加UserRoleTrait特性。默认情况下,App\User是用于身份验证的模型。

    class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
        
        use Riogo\Permiso\UserRolesTrait
        ...
    }    

5. 运行迁移

要创建角色和权限表的迁移文件,请使用以下命令

$ php artisan permiso:migration

这将在database/migrations上创建一个迁移文件。然后使用migrate命令。

$ php artisan migrate

如何使用

Permiso扩展了Auth类的功能,以便检查认证用户是否具有特定的角色或权限。

检查角色

要检查角色,您必须使用hasRole()方法。

    if (Auth::hasRole('admin')) {
        // Actions for this Role
    }

您还可以使用别名方法is()

     if (Auth::is('admin')) {
        // Actions for this Role
     }

检查多个角色

您可以检查多个角色,传递一个包含角色的数组或以逗号分隔的值的字符串。

    // Using an array
    if (Auth::hasRole(['admin', 'member'])) {
        // Actions for this Roles
    }
    
    // Same result with string
    if (Auth::hasRole('admin, member')) {
        // Actions for this Roles
    }

如果用户具有这些角色中的一个或多个,则返回true。

如果您想检查用户是否具有所有角色,请在hasRole()之前使用checkAll()方法。

    // Will return true if user have admin and member roles.
    if (Auth::checkAll()->hasRole(['admin', 'member'])) {
        // Actions for this Roles
    }

检查权限

所有关于角色的使用都适用于权限,使用hasPermission()或您的别名can()

    if (Auth::hasPermission('users.list')) {
        // Actions for this Permission
    }
    
    if (Auth::checkAll()->can('users.delete, users.create')) {
        // Actions for this Permissions
    }

方法is的变体

要检查一个角色,可以使用is()方法的变体,它使用一个魔术方法来定义要检查的角色。请参阅示例

  • Auth::isAdmin()如果用户具有admin角色,则返回true。
  • Auth::isMember()如果用户具有member角色,则返回true。
  • Auth::isRoleWithLongName()如果用户具有role_with_long_name角色,则返回true。

配置

如果您将使用自己的角色和权限模型或更改默认的表名,请使用以下命令发布配置文件

$ php artisan vendor:publish --provider="Riogo\Permiso\PermisoServiceProvider"

并在config/permiso.php中更改所有需要的配置。