Files
Helpddesk/Modules/Helpdesk/Policies/TicketPolicy.php
T
2026-08-25 14:41:15 +01:00

50 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Modules\Helpdesk\Policies;
use App\Models\User;
use Modules\Helpdesk\Models\Ticket;
final class TicketPolicy
{
public function viewAny(User $user): bool
{
return true;
}
public function view(User $user, Ticket $ticket): bool
{
return $this->isPrivileged($user)
|| ($user->isHelpdeskAgent() && ((int) $ticket->agent_id === (int) $user->id || (int) $ticket->user_id === (int) $user->id))
|| (int) $ticket->user_id === (int) $user->id;
}
public function create(User $user): bool
{
return true;
}
public function update(User $user, Ticket $ticket): bool
{
return $this->isPrivileged($user)
|| ($user->isHelpdeskAgent() && (int) $ticket->agent_id === (int) $user->id);
}
public function comment(User $user, Ticket $ticket): bool
{
return $this->view($user, $ticket);
}
public function delete(User $user, Ticket $ticket): bool
{
return $this->isPrivileged($user);
}
private function isPrivileged(User $user): bool
{
return $user->isHelpdeskAdmin();
}
}