osaris-uk/access

基于角色和权限的 Laravel 访问控制包

2.0 2023-07-07 16:40 UTC

This package is auto-updated.

Last update: 2024-09-07 19:22:24 UTC


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)