74 lines
2.5 KiB
PHP
74 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace Modules\ManagementTools\Console;
|
|
|
|
use Illuminate\Console\Command;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class ApplyExecutiveRoleMatrixCommand extends Command
|
|
{
|
|
protected $signature = 'managementtools:apply-role-matrix {business_id}';
|
|
|
|
protected $description = 'Create and apply executive role matrix for a business';
|
|
|
|
public function handle()
|
|
{
|
|
$businessId = (int) $this->argument('business_id');
|
|
|
|
$matrix = [
|
|
"CEO#{$businessId}" => [
|
|
'managementtools.access',
|
|
'managementtools.daily_report_all',
|
|
'managementtools.board_view',
|
|
'managementtools.board_manage',
|
|
'managementtools.ticket_manage',
|
|
'managementtools.task_report',
|
|
'managementtools.manage_scores',
|
|
'managementtools.team_view',
|
|
],
|
|
"COO#{$businessId}" => [
|
|
'managementtools.access',
|
|
'managementtools.daily_report_all',
|
|
'managementtools.board_view',
|
|
'managementtools.manage_employee_tasks',
|
|
'managementtools.task_report',
|
|
'managementtools.team_view',
|
|
'managementtools.ticket_manage',
|
|
],
|
|
"CFO#{$businessId}" => [
|
|
'managementtools.access',
|
|
'managementtools.daily_report_all',
|
|
'managementtools.board_view',
|
|
'managementtools.board_manage',
|
|
'managementtools.ticket_manage',
|
|
],
|
|
"Board#{$businessId}" => [
|
|
'managementtools.access',
|
|
'managementtools.daily_report_all',
|
|
'managementtools.board_view',
|
|
],
|
|
"PMO#{$businessId}" => [
|
|
'managementtools.access',
|
|
'managementtools.daily_report_all',
|
|
'managementtools.task_report',
|
|
'managementtools.manage_employee_tasks',
|
|
'managementtools.board_view',
|
|
],
|
|
];
|
|
|
|
foreach ($matrix as $roleName => $permissions) {
|
|
$role = Role::firstOrCreate(
|
|
['name' => $roleName, 'guard_name' => 'web', 'business_id' => $businessId],
|
|
['is_default' => 0]
|
|
);
|
|
$role->syncPermissions($permissions);
|
|
$this->info("Role synced: {$roleName}");
|
|
}
|
|
|
|
$this->info("Executive role matrix applied for business #{$businessId}");
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|
|
|