singleloginsystem/database/seeders/ExampleUserWithRoleSeeder.php
= f02caef80c Feat: add role seeding, dashboard routing
- Added `DefaultUserRole` and permissions enums (`AccessManager`, `Apps`, `Settings`) for centralizing role and permission constants.
- Implemented `DashboardRoute` helper to resolve routes dynamically based on user roles.
- Introduced seeders for default roles (`DefaultRoleWithPermissionSeeder`, `PermissionSeeder`, `ExampleUserWithRoleSeeder`) with role-permission assignments.
- Created `EnumExtractor` utility for parsing enums and generating permissions.
- Customized dashboard routes with role-based redirection logic.
- Updated sidebar navigation to display role-based menu items with permission checks.
2026-05-21 10:24:57 +00:00

50 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace Database\Seeders;
use App\Enums\DefaultUserRole;
use App\Models\{Role, User};
use Illuminate\Database\Seeder;
class ExampleUserWithRoleSeeder extends Seeder
{
public function run(): void
{
/**
* Create a user for each role;
*/
$this->syncAdminRole();
$this->syncUserRole();
}
private function syncAdminRole(): void
{
$role = Role::findOrCreate(DefaultUserRole::Admin->value);
// Check if user exists by email, otherwise create via factory
$user = User::firstWhere('email', 'admin@example.com')
?? User::factory()->create([
'name' => 'Admin',
'email' => 'admin@example.com',
'password' => 'password',
]);
$user->assignRole($role);
}
private function syncUserRole(): void
{
$role = Role::findOrCreate(DefaultUserRole::User->value);
$user = User::firstWhere('email', 'test@example.com')
?? User::factory()->create([
'name' => 'Test User',
'email' => 'test@example.com',
'password' => 'password',
]);
$user->assignRole($role);
}
}