Rollen für Langutor: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= Links = = Zielsetzung = Es soll ein Rollen-/Rechtesystem mittels des Paketes <code>spatie/laravel-permission</code> eingerichtet werden. = Vorgehen = <pre> composer require spatie/laravel-permission </pre> == app/Http/Kernel.php == <pre> protected $middlewareAliases = [ .... 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, 'role_…“) |
(→Links) |
||
Zeile 1: | Zeile 1: | ||
= Links = | = Links = | ||
* https://www.allphptricks.com/simple-laravel-10-user-roles-and-permissions/ | |||
= Zielsetzung = | = Zielsetzung = |
Version vom 17. Oktober 2023, 21:03 Uhr
Links
Zielsetzung
Es soll ein Rollen-/Rechtesystem mittels des Paketes spatie/laravel-permission
eingerichtet werden.
Vorgehen
composer require spatie/laravel-permission
app/Http/Kernel.php
protected $middlewareAliases = [ .... 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, 'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class, ];
app\Models\User.php
... use HasApiTokens, HasFactory, Notifiable, HasRoles; ...
php artisan make:seeder PermissionSeeder php artisan make:seeder RoleSeeder php artisan make:seeder SuperAdminSeeder
- database\seeders\PermissionSeeder.php
use Spatie\Permission\Models\Permission; ... public function run(): void { $permissions = [ 'create-role', 'edit-role', 'delete-role', 'create-user', 'edit-user', 'delete-user', 'create-data', 'edit-data', 'delete-data' ]; // Looping and Inserting Array's Permissions into Permission Table foreach ($permissions as $permission) { Permission::create(['name' => $permission]); } }
database\seeders\RoleSeeder.php
use Spatie\Permission\Models\Role; ... public function run(): void { Role::create(['name' => 'Super Admin']); $admin = Role::create(['name' => 'Admin']); $manager = Role::create(['name' => 'Manager']); $student = Role::create(['name' => 'Student']); $admin->givePermissionTo([ 'create-user', 'edit-user', 'delete-user', 'create-product', 'edit-product', 'delete-product', 'create-data', 'edit-data', 'delete-data' ]); $manager->givePermissionTo([ 'create-data', 'edit-data', 'delete-data' ]); $student->givePermissionTo([ 'create-data', 'edit-data' ]); }
database\seeders\SuperAdminSeeder.php
use App\Models\User; use Illuminate\Support\Facades\Hash; ... public function run(): void { // Creating Super Admin User $superAdmin = User::create([ 'name' => 'Langutor', 'email' => 'langutor@hamatoma.de', 'password' => Hash::make('topSecret') ]); $superAdmin->assignRole('Super Admin'); // Creating Admin User $admin = User::create([ 'name' => 'administrator', 'email' => 'langutor@hamatoma.de', 'password' => Hash::make('topSecret') ]); $admin->assignRole('Admin'); // Creating Product Manager User $manager = User::create([ 'name' => 'Alice', 'email' => 'alice@hamatoma.de', 'password' => Hash::make('topSecret') ]); $manager->assignRole('Manager'); }
database\seeders\DatabaseSeeder.php
use Database\Seeders\RoleSeeder; use Database\Seeders\PermissionSeeder; use Database\Seeders\SuperAdminSeeder; ... public function run(): void { // \App\Models\User::factory(10)->create(); // \App\Models\User::factory()->create([ // 'name' => 'Test User', // 'email' => 'test@example.com', // ]); $this->call([ PermissionSeeder::class, RoleSeeder::class, SuperAdminSeeder::class, ]); }
Terminal
php artisan migrate:fresh --seed
app\Providers\AuthServiceProvider.php
use Illuminate\Support\Facades\Gate; ... public function boot(): void { Gate::before(function ($user, $ability) { return $user->hasRole('Super Admin') ? true : null; }); }
Enable Bootstrap 5
- app\Providers\AppServiceProvider.php
use Illuminate\Pagination\Paginator; ... public function boot(): void { Paginator::useBootstrapFive(); }
routes/web.php
Route::resources([ 'roles' => RoleController::class, 'users' => UserController::class, ]);