osaris-uk / access
基于角色和权限的 Laravel 访问控制包
2.0
2023-07-07 16:40 UTC
Requires
- php: ^7.3 | ^8.0
- illuminate/auth: >=6.0
- illuminate/database: >=6.0
- illuminate/http: >=6.0
- illuminate/routing: >=6.0
- illuminate/support: >=6.0
- illuminate/view: >=6.0
Requires (Dev)
- nunomaduro/larastan: 1.x-dev
- orchestra/testbench: 6.x-dev
- pestphp/pest: 1.x-dev
- pestphp/pest-plugin-laravel: 1.x-dev
README
用法
对于 Laravel 5.5 - 5.7,使用 v1.3.2 版本
运行迁移后,您可以通过将 AccessTrait
添加到您的用户模型中来开始使用此包。
use OsarisUk\Access\AccessTrait; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable, AccessTrait; }
默认情况下,所有用户帐户都将创建具有 'user' 角色,这可以在 access 配置中进行配置。
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="OsarisUk\Access\AccessServiceProvider" --tag="config"
此包将读取 Laravel 的 auth 配置中的默认用户模型 auth.providers.users.model
。
中间件
此包包含 AccessMiddleware
。这允许您保护路由,允许具有特定角色的用户访问
Route::group(['middleware' => ['access:admin|moderator']], function () { // }); Route::group(['middleware' => ['access:user']], function () { // });
您还可以允许具有特定权限的用户访问
Route::group(['middleware' => ['access:user,create posts']], function () { // }); Route::group(['middleware' => ['access:user,remove posts']], function () { // }); Route::group(['middleware' => ['access:,edit posts']], function () { // });
Blade 指令
此包集成了默认的 Laravel Blade 指令 @can
,这允许您根据用户分配的权限显示内容,包括通过角色分配的权限
@can('edit posts') <a href="#">Edit Post</a> @endcan
此包还包括一个 @role
Blade 指令,允许您根据用户分配的角色显示内容
@role('moderator') <a href="#">Remove Post</a> @endrole
可用方法
giveRoles(...$roles) withdrawRoles(...$roles) updateRoles(...$roles) givePermissionTo(...$permissions) withdrawPermissionTo(...$permissions) updatePermissions(...$permissions) hasRole(...$roles) hasPermissionTo($permission)