Files
econom/app/Rules/ValidTeamInvitation.php
brusnitsyn fb2e6c58e3
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
first commit
2026-04-06 00:06:00 +09:00

48 lines
1.2 KiB
PHP

<?php
namespace App\Rules;
use App\Models\TeamInvitation;
use App\Models\User;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Translation\PotentiallyTranslatedString;
class ValidTeamInvitation implements ValidationRule
{
public function __construct(protected ?User $user)
{
//
}
/**
* Run the validation rule.
*
* @param Closure(string, ?string=): PotentiallyTranslatedString $fail
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if (! $value instanceof TeamInvitation || ! $this->user instanceof User) {
$fail(__('This invitation was sent to a different email address.'));
return;
}
if ($value->isAccepted()) {
$fail(__('This invitation has already been accepted.'));
return;
}
if ($value->isExpired()) {
$fail(__('This invitation has expired.'));
return;
}
if (strtolower($value->email) !== strtolower($this->user->email)) {
$fail(__('This invitation was sent to a different email address.'));
}
}
}