confrariaweb/laravel-entrust

laravel 访问控制包 - ACL

dev-master 2022-08-10 05:00 UTC

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 许可证 授权。