diff --git a/src/Entity/Nameserver.php b/src/Entity/Nameserver.php index 988aeec..15a6143 100644 --- a/src/Entity/Nameserver.php +++ b/src/Entity/Nameserver.php @@ -2,7 +2,11 @@ namespace App\Entity; +use App\Controller\ConfigController; +use App\Controller\EncryptionController; +use Exception; use OpenApi\Attributes as OAT; +use SodiumException; /** * @@ -11,73 +15,109 @@ use OpenApi\Attributes as OAT; class Nameserver { - private int $id; - private String $name; - private String $a; - private String $aaaa; - private String $apikey; - - public function __construct(String $name, int $id = 0, String $a = '', String $aaaa = '', String $apikey = '') + /** + * @param string $name + * @param int $id + * @param string $a + * @param string $aaaa + * @param string $passphrase + * @param string $apikey + * @param string $apikeyPrefix + */ + public function __construct( + private string $name, + private int $id = 0, + private string $a = '', + private string $aaaa = '', + private readonly string $passphrase = '', + private string $apikey = '', + private string $apikeyPrefix = '') { - $this->id = $id; - $this->name = $name; - $this->a = $a; - $this->aaaa = $aaaa; - $this->apikey = $apikey; - } - - + if ($this->passphrase) { + $configController = new ConfigController(); + $encryptionController = new EncryptionController(); + + $encryptionKey = $configController->getConfig(configKey: 'encryptionKey'); + + [$this->apikeyPrefix] = explode(separator: '.', string: $this->passphrase); + + try { + $this->apikey = $encryptionController->safeEncrypt(message: $this->passphrase, key: $encryptionKey); + } catch (Exception|SodiumException $e) { + die($e->getMessage() . PHP_EOL); + } + } + + } + + /** + * @return string + */ + public function getApikeyPrefix(): string + { + return $this->apikeyPrefix; + } + + /** + * @param string $apikeyPrefix + */ + public function setApikeyPrefix(string $apikeyPrefix): void + { + $this->apikeyPrefix = $apikeyPrefix; + } + + /** - * @return String + * @return string */ #[OAT\Property(type: 'string')] public function getA(): string { return $this->a; } - + /** - * @param String $a + * @param string $a */ public function setA(string $a): void { $this->a = $a; } - + /** - * @return String + * @return string */ #[OAT\Property(type: 'string')] public function getAaaa(): string { return $this->aaaa; } - + /** - * @param String $aaaa + * @param string $aaaa */ public function setAaaa(string $aaaa): void { $this->aaaa = $aaaa; } - + /** - * @return String + * @return string */ #[OAT\Property(type: 'string')] public function getApikey(): string { return $this->apikey; } - + /** - * @param String $apikey + * @param string $apikey */ public function setApikey(string $apikey): void { $this->apikey = $apikey; } - + /** * @return int */ @@ -86,7 +126,7 @@ class Nameserver { return $this->id; } - + /** * @param int $id */ @@ -94,22 +134,30 @@ class Nameserver { $this->id = $id; } - + /** - * @return String + * @return string */ #[OAT\Property(type: 'string')] public function getName(): string { return $this->name; } - + /** - * @param String $name + * @param string $name */ public function setName(string $name): void { $this->name = $name; } - + + /** + * @return string + */ + public function getPassphrase(): string + { + return $this->passphrase; + } + } \ No newline at end of file