65 lines
4.1 KiB
PHP
65 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Spatie\Permission\Models\Role;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Illuminate\Database\Seeder;
|
|
use Spatie\Permission\PermissionRegistrar;
|
|
|
|
class RoleSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
|
|
|
$permissions = [
|
|
['name' => 'dashboard.view', 'group' => 'Dashboard', 'description' => 'View dashboard'],
|
|
['name' => 'google-ads.accounts.view', 'group' => 'Google Ads Accounts', 'description' => 'View Google Ads accounts'],
|
|
['name' => 'google-ads.accounts.sync', 'group' => 'Google Ads Accounts', 'description' => 'Sync Google account records'],
|
|
['name' => 'google-ads.accounts.update', 'group' => 'Google Ads Accounts', 'description' => 'Update Google Ads account assignment details'],
|
|
['name' => 'google-ads.activities.create', 'group' => 'Google Ads Activities', 'description' => 'Create account activities'],
|
|
['name' => 'google-ads.activities.update', 'group' => 'Google Ads Activities', 'description' => 'Update account activities'],
|
|
['name' => 'google-ads.activities.complete', 'group' => 'Google Ads Activities', 'description' => 'Mark account activities as complete'],
|
|
['name' => 'google-ads.activities.delete', 'group' => 'Google Ads Activities', 'description' => 'Delete account activities'],
|
|
['name' => 'google-ads.import', 'group' => 'Google Ads Accounts', 'description' => 'Import Google Ads data'],
|
|
['name' => 'google.reports.view', 'group' => 'Google Reports', 'description' => 'View Google campaign reports'],
|
|
['name' => 'client-invoices.create', 'group' => 'Client Invoices', 'description' => 'Create client invoices'],
|
|
['name' => 'client-invoices.create-client', 'group' => 'Client Invoices', 'description' => 'Create clients from pending invoices'],
|
|
['name' => 'client-invoices.update', 'group' => 'Client Invoices', 'description' => 'Update client invoices'],
|
|
['name' => 'client-invoices.approve', 'group' => 'Client Invoices', 'description' => 'Approve client invoices'],
|
|
['name' => 'client-invoices.delete', 'group' => 'Client Invoices', 'description' => 'Delete client invoices'],
|
|
['name' => 'client-invoices.view-pdf', 'group' => 'Client Invoices', 'description' => 'View invoice PDF'],
|
|
['name' => 'clients.adjustments.create', 'group' => 'Client Adjustments', 'description' => 'Create client invoice adjustments'],
|
|
['name' => 'clients.adjustments.delete', 'group' => 'Client Adjustments', 'description' => 'Delete client invoice adjustments'],
|
|
['name' => 'management.roles.view', 'group' => 'Role Management', 'description' => 'View roles'],
|
|
['name' => 'management.roles.update', 'group' => 'Role Management', 'description' => 'Update role permissions'],
|
|
['name' => 'management.users.view', 'group' => 'User Management', 'description' => 'View users'],
|
|
['name' => 'management.users.create', 'group' => 'User Management', 'description' => 'Create users'],
|
|
['name' => 'management.users.update', 'group' => 'User Management', 'description' => 'Update users'],
|
|
];
|
|
|
|
foreach ($permissions as $permission) {
|
|
Permission::query()->updateOrCreate(
|
|
['name' => $permission['name'], 'guard_name' => 'web'],
|
|
[
|
|
'group' => $permission['group'],
|
|
'group_name' => $permission['group'],
|
|
'description' => $permission['description'],
|
|
],
|
|
);
|
|
}
|
|
|
|
$adminRole = Role::query()->firstOrCreate(['name' => 'Admin', 'guard_name' => 'web']);
|
|
Role::query()->firstOrCreate(['name' => 'Sales', 'guard_name' => 'web']);
|
|
Role::query()->firstOrCreate(['name' => 'Social Media Specialist', 'guard_name' => 'web']);
|
|
|
|
$adminRole->syncPermissions(Permission::query()->pluck('name')->all());
|
|
|
|
app(PermissionRegistrar::class)->forgetCachedPermissions();
|
|
}
|
|
}
|