*/ final class ImpersonationSessionFactory extends Factory { protected $model = ImpersonationSession::class; /** @return array */ public function definition(): array { return [ 'admin_id' => User::factory(), 'target_user_id' => User::factory(), 'reason' => fake()->sentence(), 'mfa_method' => 'totp', 'ip_address' => fake()->ipv4(), 'user_agent' => fake()->userAgent(), 'started_at' => now(), 'expires_at' => now()->addMinutes(60), 'actions_count' => 0, ]; } public function ended(string $reason = 'manual'): static { return $this->state(fn () => [ 'ended_at' => now(), 'end_reason' => $reason, ]); } public function expired(): static { return $this->state(fn () => [ 'started_at' => now()->subHours(2), 'expires_at' => now()->subHour(), 'ended_at' => now()->subHour(), 'end_reason' => 'expired', ]); } }