hasAnyRole(['admin', 'supervisor', 'agent']); } public function view(User $user, Lead $lead): bool { return AccessControl::canAccessLead($user, $lead); } public function create(User $user): bool { return $user->hasRole('admin') || $user->can('create_leads') || $user->hasRole('supervisor') || $user->hasRole('agent'); } public function update(User $user, Lead $lead): bool { return AccessControl::canAccessLead($user, $lead) && ($user->hasRole('admin') || $user->can('edit_leads') || $user->hasRole('agent')); } public function delete(User $user, Lead $lead): bool { return AccessControl::canAccessLead($user, $lead) && ($user->hasRole('admin') || $user->can('delete_leads')); } public function assign(User $user, Lead $lead): bool { return AccessControl::canAccessLead($user, $lead) && ($user->hasRole('admin') || $user->can('assign_leads') || $user->can('reassign_leads')); } public function changeStage(User $user, Lead $lead): bool { return AccessControl::canAccessLead($user, $lead) && ($user->hasRole('admin') || $user->can('edit_leads') || $user->hasRole('agent')); } }