<?php
namespace Database\Seeders;
use App\Modules\User\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;
/**
* PharmacistUserSeeder
*
* Creates the `pharmacist` Spatie role and a demo pharmacist user.
*
* Run: php artisan db:seed --class=PharmacistUserSeeder
*
* Or create manually via tinker:
* $role = \Spatie\Permission\Models\Role::firstOrCreate(['name' => 'pharmacist', 'guard_name' => 'web']);
* $user = \App\Modules\User\Models\User::create([
* 'name' => 'Pharmacist Demo',
* 'email' => 'pharmacist@stpecommerce.com',
* 'password' => bcrypt('Pharmacist@1234!'),
* ]);
* $user->assignRole('pharmacist');
*/
class PharmacistUserSeeder extends Seeder
{
public function run(): void
{
app()[PermissionRegistrar::class]->forgetCachedPermissions();
// ── Pharmacy-specific permissions ─────────────────────────────────────
$pharmacyPermissions = [
'prescriptions.view',
'prescriptions.approve',
'prescriptions.reject',
'therapeutic_categories.view',
'therapeutic_categories.manage',
];
foreach ($pharmacyPermissions as $permission) {
Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'web']);
}
// ── Pharmacist role ───────────────────────────────────────────────────
$role = Role::firstOrCreate(['name' => 'pharmacist', 'guard_name' => 'web']);
$role->syncPermissions($pharmacyPermissions);
// ── Demo pharmacist user ──────────────────────────────────────────────
$user = User::firstOrCreate(
['email' => 'pharmacist@stpecommerce.com'],
[
'name' => 'Pharmacist Demo',
'password' => Hash::make('Pharmacist@1234!'),
'email_verified_at' => now(),
]
);
$user->assignRole('pharmacist');
$this->command->info('✅ Pharmacist role and demo user seeded.');
$this->command->line(' Email: pharmacist@stpecommerce.com');
$this->command->line(' Password: Pharmacist@1234!');
$this->command->line(' Panel: /admin (Pharmacy nav group only)');
}
}