*/ final class UserInvitationFactory extends Factory { /** @return array */ public function definition(): array { return [ 'email' => fake()->unique()->safeEmail(), 'event_id' => null, ]; } public function configure(): static { return $this->afterMaking(function (UserInvitation $invitation): void { $invitation->invited_by_user_id ??= User::factory()->create()->id; $invitation->organisation_id ??= Organisation::factory()->create()->id; $invitation->role ??= 'org_member'; if ($invitation->token === null) { $plainToken = bin2hex(random_bytes(32)); $invitation->token = hash('sha256', $plainToken); $invitation->plainToken = $plainToken; } $invitation->status ??= 'pending'; $invitation->expires_at ??= now()->addDays(7); }); } }