47 خطوط
1.2 KiB
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);
|
|
}
|
|
}
|