CRM/backend/app/Policies/LeadPolicy.php

46 خطوط
1.4 KiB
PHP

<?php
namespace App\Policies;
use App\Models\Lead;
use App\Models\User;
use App\Support\AccessControl;
class LeadPolicy
{
public function viewAny(User $user): bool
{
return $user->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'));
}
}