muan / laravel-acl
Laravel 的 ACL 包
1.3
2020-03-10 10:52 UTC
Requires
- php: >=7.0
README
Muan Acl 是用于 Laravel 框架的 PHP 包,用于操作访问控制列表。该包提供了一种更简单的方法来控制您网站上用户的角色和权限。
要求
- PHP >=7.0
安装
- 在终端中输入以下命令
composer require muan/laravel-acl
- 将服务提供者添加到 config/app.php 文件中的 providers 部分
Laravel 5.5 使用包自动发现,因此不需要手动添加 ServiceProvider。
'providers' => [ // ... Muan\Acl\AclServiceProvider::class, // ... ],
- 运行迁移
php artisan migrate
用法
在您的用户模型上使用以下特质
// ... use Muan\Acl\Traits\{HasRolesTrait, HasPermissionsTrait}; class User extends Authenticatable { use HasRolesTrait, HasPermissionsTrait; // ... Your User Model Code }
使用观察者
要在注册后绑定基础角色到用户,您可以指定一个公共属性 $baseRole。
例如
class User extends Authenticatable { // ... /** * Attach base role */ public $baseRole = 'user'; // ... }
在代码中使用
检查角色
if ($user->hasRole('admin')) { // User is admin } // or if ($user->hasRole('admin', 'writer')) { // User is admin or writer }
附加角色
$user->attachRole(10, "moderator")
相同的函数,移除角色
$user->detachRole('moder'); // ... $user->detachRole('admin', '3', '2');
清除所有角色
$user->clearRoles();
检查权限
if ($user->hasPermission('create post')) { // User has permission "create post" }
附加权限
$user->attachPermission("update post");
移除权限
$user->detachPermission("remove post");
清除所有权限
$user->clearPermissions();
查看代码获取更多信息... =)
用于操作的命令
权限
创建新权限
php artisan permission:add "create post"
重命名权限
php artisan permission:rename "create post" create.post
删除权限
php artisan permission:remove "create post"
显示所有权限
php artisan permission:list
角色
创建新角色
php artisan role:add admin
重命名角色
php artisan role:rename admin superuser
删除角色
php artisan role:remove admin
查看所有角色
php artisan role:list
将权限附加到角色
php artisan role:attach admin --id=2 --id=3 --name="create post"
从角色中移除权限
php artisan role:detach admin --id=3 --name="destroy user"
清除所有附加权限
php artisan role:clear
查看角色信息并显示所有附加权限
php artisan role:view admin
用户
附加角色
php artisan user:role-attach 5 --id=2 --name=moderator
移除角色
php artisan user:role-detach 5 --id=2 --name=admin
从用户中移除所有角色
php artisan user:role-clear
附加权限
php artisan user:permission-attach 5 --id=7 --name="remove comment"
移除权限
php artisan user:permission-detach 5 --id=2 --name="read secret post"
从用户中移除所有权限
php artisan user:permission-clear
查看用户信息,所有附加角色和权限
php artisan user:view 5
其中 5 是用户的 ID。
使用 blade 指令
您还可以使用指令来验证当前登录用户是否有任何角色或权限。
检查角色
@role('admin') <!-- User has role admin --> @elserole('writer') <!-- User has role writer --> <!-- ... --> @else <!-- User with other roles --> @endrole
或在一个指令中检查更多角色
@role(['admin', 'writer']) <!-- User has next roles: admin, writer --> @endrole
检查权限
@can('create post') <!-- User can create post --> @elsecan('edit post') <!-- User can edit post --> @endcan
使用中间件
您可以使用角色中间件来检查对某些路由的访问权限
Route::middleware(['role:admin'])->group(function() { // Only for user with role admin Route::get('/admin', function() { // some code }); });
也可以使用权限中间件
Route::middleware(['permission:create post'])->group(function() { // Only for user with permission create post Route::get('/admin/post', function() { // some code }); });
或者同时使用角色和权限中间件
Route::middleware(['role:moderator', 'permission:remove post'])->group(function() { // Only for user with role moderator and with permission create post Route::get('/admin/post/remove', function() { // some code }); });
许可
Muan Laravel Acl 包采用 MIT 许可证。