. */ namespace SPT\Generators; use SP\Core\Crypt\Crypt; use SP\Core\Crypt\Vault; use SP\Domain\Auth\Models\AuthToken; use SP\Domain\Core\Exceptions\CryptException; /** * Class AuthTokenGenerator */ final class AuthTokenGenerator extends DataGenerator { public function buildAuthToken(): AuthToken { return new AuthToken($this->authTokenProperties()); } private function authTokenProperties(): array { return [ 'id' => $this->faker->randomNumber(3), 'userId' => $this->faker->randomNumber(3), 'token' => $this->faker->sha1(), 'createdBy' => $this->faker->randomNumber(3), 'startDate' => $this->faker->unixTime(), 'actionId' => $this->faker->randomNumber(3), 'hash' => $this->faker->sha1(), 'vault' => serialize($this->getVault()) ]; } private function getVault(): ?Vault { try { return Vault::factory(new Crypt())->saveData($this->faker->text(), $this->faker->sha1()); } catch (CryptException) { return null; } } }