confrariaweb / laravel-entrust
laravel 访问控制包 - ACL
dev-master
2022-08-10 05:00 UTC
Requires
This package is auto-updated.
Last update: 2024-09-10 09:29:43 UTC
README
这是一个简单、易于使用的 Laravel 访问控制 (ACL) 包。
包页面: https://confrariaweb.github.io/laravel-acl
包安装
开始之前,您需要确保数据库访问设置已经配置。
在您的终端中,只需使用以下命令行。
composer require confrariaweb/laravel-acl
安装完成后,请将以下项添加到 app/http/kernel.php 中的 $routeMiddleware 数组。
'check.permission' => \ConfrariaWeb\Acl\Middleware\CheckPermission::class,
下一步配置,如果您不使用 "confrariaweb / laravel-user" 包,则应仅使用。如果您使用此包,则无需实现以下配置,因为它已包含在 "laravel-user" 包中。
class User extends Authenticatable { //add this call to the application's user model use \ConfrariaWeb\Acl\Traits\AclTrait;
下一步是将配置文件放在 "/config" 目录中。
php artisan vendor:publish --provider="ConfrariaWeb\Acl\Providers\AclServiceProvider"
我们几乎完成了,接下来的命令是对配置缓存进行重构并分别运行表的迁移。在命令终端中,输入以下命令。
php artisan config:cache php artisan migrate
可选:您可以使用以下命令创建数据库中的某些条目,这不是强制性的,您可以在方便的时候修改它们。
php artisan db:seed
执行上述步骤后,包已可供使用。
包使用
此包可以在您的应用程序的不同位置使用。
在中间件中使用
要使用中间件,它使用路由名称作为权限参数。在下面的示例中,它检查用户是否有 'admin.profile' 权限来访问该路由。
Route::get('admin/profile', function () { // })->middleware('check.permission')->name('admin.profile');
在控制器中使用
在控制器上使用访问控制的正确方法是:
按角色
abort_unless(Auth::user()->hasRole('name-role'), 403);
按权限
abort_unless(Auth::user()->hasPermission('name-permission'), 403);
使用示例
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HomeController extends Controller { public function index() { /*Here we check if the user is included in the roles of editing users*/ abort_unless(Auth::user()->hasRole('edit-user'), 403); return view('home'); } }
在视图中使用
要在视图 (.blade) 中进行版本控制,您可以使用按角色或权限控制。
按角色
@role('name-role') <p>this content is only visible to those who have permission...</p> @endrole
按权限
@permission('name-permission') <p>this content is only visible to those who have permission...</p> @endpermission
许可
Laravel 框架是开源软件,根据 MIT 许可证 授权。