Files
GSB-Construction/Modules/UserManagement/database/seeders/UserManagementDatabaseSeeder.php

65 lines
1.8 KiB
PHP

<?php
namespace Modules\UserManagement\Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use Modules\UserManagement\Models\EmployeeProfile;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class UserManagementDatabaseSeeder extends Seeder
{
public function run(): void
{
// Create permissions
$permissions = [
'users.view',
'users.create',
'users.edit',
'users.delete',
'users.manage-status',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate(['name' => $permission]);
}
// Create roles with permissions
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$adminRole->syncPermissions($permissions);
$employeeRole = Role::firstOrCreate(['name' => 'employee']);
$employeeRole->syncPermissions(['users.view']);
$customerRole = Role::firstOrCreate(['name' => 'customer']);
// Create default admin user
$admin = User::firstOrCreate(
['email' => 'admin@gsb-cons.com'],
[
'name' => 'System Admin',
'password' => bcrypt('password'),
'user_type' => 'admin',
'status' => 'active',
]
);
$admin->assignRole('admin');
$profile = EmployeeProfile::firstOrCreate(
['user_id' => $admin->id],
[
'department' => 'Administration',
'position' => 'System Administrator',
'employee_code' => 'EMP-0001',
'hire_date' => now(),
]
);
$admin->update([
'userable_type' => EmployeeProfile::class,
'userable_id' => $profile->id,
]);
}
}