Gate specialty mutate CTAs on Care abilities, not only module manage.
Deploy Ladill Care / deploy (push) Successful in 1m3s
Deploy Ladill Care / deploy (push) Successful in 1m3s
Nurses can manage limited specialties but lack consultations.manage, so hide Start/stage/chart edits that 403 while keeping queue/vitals/billing aligned with what those routes actually authorize. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -77,7 +77,13 @@ class EmergencyWorkspaceController extends Controller
|
||||
SpecialtyModuleService $modules,
|
||||
EmergencyVitalsService $vitals,
|
||||
): RedirectResponse {
|
||||
$this->authorizeAbility($request, 'consultations.manage');
|
||||
$permissions = app(\App\Services\Care\CarePermissions::class);
|
||||
$member = $this->member($request);
|
||||
abort_unless(
|
||||
$permissions->can($member, 'vitals.manage')
|
||||
|| $permissions->can($member, 'consultations.manage'),
|
||||
403,
|
||||
);
|
||||
$this->assertEmergencyManage($request, $modules);
|
||||
$this->assertVisit($request, $visit);
|
||||
|
||||
|
||||
@@ -637,8 +637,20 @@ class SpecialtyModuleController extends Controller
|
||||
$services = $shell->provisionedServices($organization, $module);
|
||||
|
||||
$permissions = app(\App\Services\Care\CarePermissions::class);
|
||||
// Match every ability that mutate routes actually check — module canManage alone is not enough.
|
||||
$canConsult = $permissions->can($member, 'consultations.manage') && $canManageSpecialty;
|
||||
$canAdvanceStage = $canConsult;
|
||||
$canStartConsultation = $canConsult;
|
||||
$canCallNext = $canManageSpecialty;
|
||||
$canManageClinical = $canManageSpecialty;
|
||||
$canManageVitals = $canManageSpecialty && (
|
||||
$permissions->can($member, 'vitals.manage')
|
||||
|| $permissions->can($member, 'consultations.manage')
|
||||
);
|
||||
$canManageQueue = $permissions->can($member, 'appointments.manage') && $canManageSpecialty;
|
||||
$canBookAppointments = $permissions->can($member, 'appointments.manage');
|
||||
$canViewPatients = $permissions->can($member, 'patients.view');
|
||||
$canViewAppointments = $permissions->can($member, 'appointments.view');
|
||||
$branchLabel = $branchId
|
||||
? (string) (\App\Models\Branch::owned($owner)->whereKey($branchId)->value('name') ?? '')
|
||||
: '';
|
||||
@@ -880,7 +892,15 @@ class SpecialtyModuleController extends Controller
|
||||
'practitionerScope' => $practitionerScope,
|
||||
'lockToPractitioner' => $practitionerScope !== null,
|
||||
'canConsult' => $canConsult,
|
||||
'canAdvanceStage' => $canAdvanceStage,
|
||||
'canStartConsultation' => $canStartConsultation,
|
||||
'canCallNext' => $canCallNext,
|
||||
'canManageClinical' => $canManageClinical,
|
||||
'canManageVitals' => $canManageVitals,
|
||||
'canManageQueue' => $canManageQueue,
|
||||
'canBookAppointments' => $canBookAppointments,
|
||||
'canViewPatients' => $canViewPatients,
|
||||
'canViewAppointments' => $canViewAppointments,
|
||||
'canManageSpecialty' => $canManageSpecialty,
|
||||
'canViewSpecialty' => $canViewSpecialty,
|
||||
'canReferSpecialty' => $canReferSpecialty,
|
||||
|
||||
Reference in New Issue
Block a user