kodeine / laravel-acl
Laravel 5 内置 Auth 系统的轻量级基于角色的权限。
2.0.9
2024-08-19 00:33 UTC
Requires
- php: >=7.2
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- doctrine/dbal: ^2.9
- orchestra/testbench: ^5.0|^6.0
- phpunit/phpunit: ^8.0|^9.0
README
Laravel ACL 为 Laravel 9.0+ 内置的 Auth 系统添加基于角色的权限。ACL 中间件保护路由和 CRUD 控制器方法。
目录
要求
- 本包的 2.x 版本需要 PHP 7.2+ 和 Laravel 6.0+。
- 1.x 版本需要 PHP 5.6+ 和 Laravel 5.0+。
入门
使用 composer 安装包
composer require kodeine/laravel-acl
如果您需要支持 Laravel 5.x,请确保安装 1.x 版本
composer require kodeine/laravel-acl "^1.0"
- 如果您正在使用 Laravel 5.4 之前的版本,请手动在您的 config/app.php 文件中注册服务提供者
'providers' => [ 'Illuminate\Foundation\Providers\ArtisanServiceProvider', 'Illuminate\Auth\AuthServiceProvider', ... 'Kodeine\Acl\AclServiceProvider', ],
- 发布包的配置文件,并将您自己的模型添加到 ACL 模型列表中
$ php artisan vendor:publish --provider="Kodeine\Acl\AclServiceProvider"
发布后,它会发布配置文件,您可以在其中
- 使用自己的模型:定义自己的模型,这些模型应扩展到 Acl 模型。
- 使用自己的守卫:定义一个用于用户恢复的除 Laravel 默认以外的守卫。
- 将中间件添加到您的
app/Http/Kernel.php
。
protected $routeMiddleware = [ .... 'acl' => 'Kodeine\Acl\Middleware\HasPermission', ];
- 将 HasRole 特性添加到您的
User
模型。
use Kodeine\Acl\Traits\HasRole; class User extends Model implements AuthenticatableContract, CanResetPasswordContract { use Authenticatable, CanResetPassword, HasRole; }
- 运行迁移来生成您的角色和权限表
请注意,如果您从先前的版本升级到 6.0,用户表上 id 的默认列类型已更改。在某些数据库中,外键只能使用匹配的列类型定义。因此,您需要将用户表上的 id 列更改为 bigInteger 才能使用此包。
php artisan migrate
文档
通过 Wiki 了解更多信息。
路线图
以下是下一个版本要做的 TODO 列表。
- 重构源代码。
- 纠正所有问题。
- 为最终用户权限添加缓存。
变更日志
2022 年 6 月 14 日
- 添加了对不同守卫的支持
2019 年 9 月 14 日
- 更新了 README 以反映新的大版本发布
2019 年 9 月 13 日
- 添加了对 Laravel 6 的支持
2016 年 9 月 22 日*
- 添加了单元测试
2016 年 9 月 20 日*
- 添加了对 Laravel 5.3 的支持
2016 年 9 月 19 日
- 为角色和权限添加了缓存支持。
2015 年 6 月 14 日
- 为 l5.0 添加了 backward compatibility 到 lists() 方法。
- 添加了 Blade 模板扩展。
2015 年 3 月 28 日
- 添加了 Role Scope 以获取具有特定角色的所有用户。例如
User::role('admin')>get();
将列出具有admin
角色的所有用户。
2015 年 3 月 7 日
-
is()
和can()
方法现在支持逗号作为AND
操作符,以及管道作为OR
操作符。或者,将操作符作为第二个参数传递。更多信息请参阅 这里。 - 您可以将多个权限绑定在一起,以便它们继承权限。更多信息请参阅 这里。
贡献指南
支持PSR-2 PHP编码规范和语义化版本。
请在问题页面上报告您发现的任何问题。欢迎提交拉取请求。