Spatie çoxlu Laravel paketi dəstəkləyir. Onların üçü demək olar ki, hər biznes tətbiqində rast gəlinən məsələləri həll edir: kim nə edə bilər (laravel-permission), fayllar harada saxlanır (laravel-medialibrary) və kim nəyi dəyişib (laravel-activitylog).
spatie/laravel-permission
// composer require spatie/laravel-permission
// php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
// php artisan migrate
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
}
$role = Role::create(['name' => 'editor']);
Permission::create(['name' => 'publish posts']);
$role->givePermissionTo('publish posts');
$user->assignRole('editor');
$user->hasRole('editor'); // true
$user->can('publish posts'); // true, through the role
$user->givePermissionTo('edit posts'); // direct permission// bootstrap/app.php
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
]);
})
Route::middleware('role:admin')->group(function () { /* ... */ });
Route::post('/posts/{post}/publish', PublishController::class)
->middleware('permission:publish posts');
// Blade
@can('publish posts')
<button>Publish</button>
@endcan
// seeders: reset the cache first
app()[PermissionRegistrar::class]->forgetCachedPermissions();