CRM/backend/app/Policies/QualityReviewPolicy.php

47 خطوط
1.2 KiB
PHP

<?php
namespace App\Policies;
use App\Models\Call;
use App\Models\QualityReview;
use App\Models\User;
use App\Support\AccessControl;
class QualityReviewPolicy
{
public function before(User $user): ?bool
{
return $user->hasRole('admin') ? true : null;
}
public function viewAny(User $user): bool
{
return $user->can('view_quality_reviews');
}
public function view(User $user, QualityReview $review): bool
{
if ($user->hasRole('agent')) {
return $review->agent_id === $user->id && $review->is_shared_with_agent;
}
return $user->can('view_quality_reviews')
&& AccessControl::canAccessCall($user, $review->call);
}
public function create(User $user, Call $call): bool
{
return $user->hasRole('supervisor')
&& $user->can('create_quality_reviews')
&& AccessControl::canAccessCall($user, $call);
}
public function update(User $user, QualityReview $review): bool
{
return $user->hasRole('supervisor')
&& $user->can('create_quality_reviews')
&& $review->reviewer_id === $user->id
&& AccessControl::canAccessCall($user, $review->call);
}
}