. */ namespace SP\Domain\ItemPreset\Models; use SP\Domain\ItemPreset\Ports\PresetInterface; /** * Class Password * * TODO: serde using JSON */ readonly class Password implements PresetInterface { private const PRESET_TYPE = 'password'; public const EXPIRE_TIME_MULTIPLIER = 86400; private int|float $expireTime; public function __construct( private int $length, private bool $useNumbers, private bool $useLetters, private bool $useSymbols, private bool $useUpper, private bool $useLower, private bool $useImage, int $expireTime, private int $score, private ?string $regex = null ) { $this->expireTime = $expireTime * self::EXPIRE_TIME_MULTIPLIER; } public function getRegex(): ?string { return $this->regex; } public function getScore(): int { return $this->score; } public function getLength(): int { return $this->length; } public function isUseNumbers(): bool { return $this->useNumbers; } public function isUseLetters(): bool { return $this->useLetters; } public function isUseSymbols(): bool { return $this->useSymbols; } public function isUseUpper(): bool { return $this->useUpper; } public function isUseLower(): bool { return $this->useLower; } public function isUseImage(): bool { return $this->useImage; } public function getExpireTime(): int { return $this->expireTime; } public function getPresetType(): string { return self::PRESET_TYPE; } }