ricardoriogo / permiso
简单的Laravel 5包,用于添加基于角色的权限
Requires
- php: >=5.4.0
- illuminate/auth: ~5.0
- illuminate/console: ~5.0
- illuminate/database: ~5.0
- illuminate/support: ~5.0
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2024-09-28 16:41:30 UTC
README
这是一个简单的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
中更改所有需要的配置。