Files
travel/app/Policies/TravelRequestPolicy.php
Tim Basten 564f78dcda
All checks were successful
linter / quality (push) Successful in 1m37s
tests / ci (8.4) (push) Successful in 2m13s
tests / ci (8.5) (push) Successful in 1m25s
initial
2026-03-05 11:41:39 +08:00

44 lines
1.1 KiB
PHP

<?php
namespace App\Policies;
use App\Enums\TravelStatus;
use App\Models\TravelRequest;
use App\Models\User;
class TravelRequestPolicy
{
public function viewAny(User $user): bool
{
return true;
}
public function view(User $user, TravelRequest $travelRequest): bool
{
return $user->id === $travelRequest->user_id
|| $user->hasAnyRole(['travel_approver', 'administrator']);
}
public function create(User $user): bool
{
return $user->hasAnyRole(['staff', 'travel_approver', 'administrator']);
}
public function update(User $user, TravelRequest $travelRequest): bool
{
return $user->id === $travelRequest->user_id
&& $travelRequest->status === TravelStatus::Draft;
}
public function approve(User $user, TravelRequest $travelRequest): bool
{
return $user->hasAnyRole(['travel_approver', 'administrator'])
&& $travelRequest->status === TravelStatus::Pending;
}
public function delete(User $user, TravelRequest $travelRequest): bool
{
return $user->hasRole('administrator');
}
}