ledgerrz/app/Policies/MutationPolicy.php
Daan Meijer 2ab1acf040
Some checks failed
linter / quality (push) Failing after 1m6s
tests / ci (8.3) (push) Failing after 50s
tests / ci (8.4) (push) Failing after 1m6s
tests / ci (8.5) (push) Failing after 1m6s
mutations hebben single
2026-07-06 17:47:14 +02:00

51 lines
1.3 KiB
PHP

<?php
namespace App\Policies;
use App\Models\Ledger;
use App\Models\Mutation;
use App\Models\User;
class MutationPolicy
{
/**
* Determine whether the user can view the mutation.
*/
public function view(User $user, Mutation $mutation): bool
{
return $user->can('view', $mutation->ledger);
}
/**
* Determine whether the user can create mutations.
*/
public function create(User $user, Ledger $ledger): bool
{
$dynamic = $ledger->dynamic;
return $dynamic->participants()->where('user_id', $user->id)->exists();
}
/**
* Determine whether the user can update the mutation.
*/
public function update(User $user, Mutation $mutation): bool
{
$dynamic = $mutation->ledger->dynamic;
$isOwner = $dynamic->participants()->where('user_id', $user->id)->where('role', 'owner')->exists();
return $isOwner && $mutation->status === 'pending';
}
/**
* Determine whether the user can void the mutation.
*/
public function void(User $user, Mutation $mutation): bool
{
$dynamic = $mutation->ledger->dynamic;
$isOwner = $dynamic->participants()->where('user_id', $user->id)->where('role', 'owner')->exists();
return $isOwner && $mutation->status !== 'voided';
}
}