CluPilotCloud/database/factories/SecurityBlockFactory.php

45 lines
1.1 KiB
PHP

<?php
namespace Database\Factories;
use App\Models\Host;
use App\Models\Instance;
use App\Models\SecurityBlock;
use Illuminate\Database\Eloquent\Factories\Factory;
/** @extends Factory<SecurityBlock> */
class SecurityBlockFactory extends Factory
{
protected $model = SecurityBlock::class;
public function definition(): array
{
return [
'instance_id' => Instance::factory(),
'ip' => $this->faker->unique()->ipv4(),
'reason' => 'instance_login',
'attempts' => 10,
'strikes' => 1,
'blocked_at' => now(),
'expires_at' => now()->addHour(),
];
}
/** Eine Host- statt Instanz-Sperre, am übergebenen Host. */
public function forHost(Host $host): static
{
return $this->state(fn () => [
'instance_id' => null,
'host_id' => $host->id,
'reason' => 'host_ssh',
]);
}
public function released(): static
{
return $this->state(fn () => [
'released_at' => now(),
]);
}
}