Files
famous-ly4-ev/app-modules/identity/database/factories/RegistrationVerificationFactory.php
T
Nyan Lin Paing 914b7f97f3 Add phone-verified user registration
Two-step flow: request a one-time code by email/phone (RegistrationVerification,
mailed via RegistrationCodeMail, rate-limited by the new api-otp limiter keyed
to the identifier), then verify the code and register with RegistrationController.
User gains a phone column/fillable.
2026-08-30 14:53:18 +07:00

58 lines
1.4 KiB
PHP

<?php
namespace Modules\Identity\Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;
use Modules\Identity\Models\RegistrationVerification;
/**
* @extends Factory<RegistrationVerification>
*/
class RegistrationVerificationFactory extends Factory
{
protected $model = RegistrationVerification::class;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'identifier' => fake()->unique()->safeEmail(),
'type' => 'email',
'code' => Hash::make('123456'),
'attempts' => 0,
'verified_at' => null,
'verification_token' => null,
'consumed_at' => null,
'expires_at' => now()->addMinutes(10),
];
}
public function phone(): self
{
return $this->state(fn (array $attributes) => [
'identifier' => fake()->numerify('+959#########'),
'type' => 'phone',
]);
}
public function verified(): self
{
return $this->state(fn (array $attributes) => [
'verified_at' => now(),
'verification_token' => str()->random(64),
]);
}
public function expired(): self
{
return $this->state(fn (array $attributes) => [
'expires_at' => now()->subMinute(),
]);
}
}