46 خطوط
1.4 KiB
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'));
|
|
}
|
|
}
|