Initial commit
This commit is contained in:
79
database/seeders/PaymentVerificationRolesSeeder.php
Normal file
79
database/seeders/PaymentVerificationRolesSeeder.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
|
||||
class PaymentVerificationRolesSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
// Create permissions for payment verification workflow
|
||||
$permissions = [
|
||||
'verify_payments_cashier' => 'Verify membership payments as cashier (Tier 1)',
|
||||
'verify_payments_accountant' => 'Verify membership payments as accountant (Tier 2)',
|
||||
'verify_payments_chair' => 'Verify membership payments as chair (Tier 3)',
|
||||
'activate_memberships' => 'Activate member accounts after payment approval',
|
||||
'view_payment_verifications' => 'View payment verification dashboard',
|
||||
];
|
||||
|
||||
foreach ($permissions as $name => $description) {
|
||||
Permission::firstOrCreate(
|
||||
['name' => $name],
|
||||
['guard_name' => 'web']
|
||||
);
|
||||
$this->command->info("Permission created: {$name}");
|
||||
}
|
||||
|
||||
// Create roles for payment verification
|
||||
$roles = [
|
||||
'payment_cashier' => [
|
||||
'permissions' => ['verify_payments_cashier', 'view_payment_verifications'],
|
||||
'description' => 'Cashier - First tier payment verification',
|
||||
],
|
||||
'payment_accountant' => [
|
||||
'permissions' => ['verify_payments_accountant', 'view_payment_verifications'],
|
||||
'description' => 'Accountant - Second tier payment verification',
|
||||
],
|
||||
'payment_chair' => [
|
||||
'permissions' => ['verify_payments_chair', 'view_payment_verifications'],
|
||||
'description' => 'Chair - Final tier payment verification',
|
||||
],
|
||||
'membership_manager' => [
|
||||
'permissions' => ['activate_memberships', 'view_payment_verifications'],
|
||||
'description' => 'Membership Manager - Can activate memberships after approval',
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($roles as $roleName => $roleData) {
|
||||
$role = Role::firstOrCreate(
|
||||
['name' => $roleName],
|
||||
['guard_name' => 'web']
|
||||
);
|
||||
|
||||
// Assign permissions to role
|
||||
$role->syncPermissions($roleData['permissions']);
|
||||
|
||||
$this->command->info("Role created: {$roleName} with permissions: " . implode(', ', $roleData['permissions']));
|
||||
}
|
||||
|
||||
// Assign all payment verification permissions to admin role (if exists)
|
||||
$adminRole = Role::where('name', 'admin')->first();
|
||||
if ($adminRole) {
|
||||
$adminRole->givePermissionTo([
|
||||
'verify_payments_cashier',
|
||||
'verify_payments_accountant',
|
||||
'verify_payments_chair',
|
||||
'activate_memberships',
|
||||
'view_payment_verifications',
|
||||
]);
|
||||
$this->command->info("Admin role updated with all payment verification permissions");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user