'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"); } } }