a9f86b2551
- Authentifizierung via Laravel Breeze (Blade) - RBAC via Spatie Permission v8 (admin/manager/user) - MariaDB-Anbindung konfiguriert - Rollen & Permissions via Seeder angelegt - Admin-Account: admin@mms-systemservice.de Version: 0.2.0
72 lines
1.9 KiB
PHP
72 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Spatie\Permission\Models\Role;
|
|
use Spatie\Permission\Models\Permission;
|
|
use App\Models\User;
|
|
|
|
class RolesAndPermissionsSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// Reset cached roles and permissions
|
|
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
// --- Permissions ---
|
|
$permissions = [
|
|
// User management
|
|
'user.view',
|
|
'user.create',
|
|
'user.edit',
|
|
'user.delete',
|
|
|
|
// Role management
|
|
'role.view',
|
|
'role.create',
|
|
'role.edit',
|
|
'role.delete',
|
|
|
|
// Network management (placeholder for future features)
|
|
'network.view',
|
|
'network.create',
|
|
'network.edit',
|
|
'network.delete',
|
|
];
|
|
|
|
foreach ($permissions as $permission) {
|
|
Permission::firstOrCreate(['name' => $permission]);
|
|
}
|
|
|
|
// --- Roles ---
|
|
$admin = Role::firstOrCreate(['name' => 'admin']);
|
|
$admin->syncPermissions(Permission::all());
|
|
|
|
$manager = Role::firstOrCreate(['name' => 'manager']);
|
|
$manager->syncPermissions([
|
|
'user.view',
|
|
'network.view',
|
|
'network.create',
|
|
'network.edit',
|
|
]);
|
|
|
|
$user = Role::firstOrCreate(['name' => 'user']);
|
|
$user->syncPermissions([
|
|
'network.view',
|
|
]);
|
|
|
|
// --- Default Admin User ---
|
|
$adminUser = User::firstOrCreate(
|
|
['email' => 'admin@mms-systemservice.de'],
|
|
[
|
|
'name' => 'Administrator',
|
|
'password' => bcrypt('Admin1234!'),
|
|
]
|
|
);
|
|
$adminUser->assignRole('admin');
|
|
|
|
$this->command->info('Roles, permissions and admin user created.');
|
|
}
|
|
}
|