From 8ec1a2942d2be3181017ac87791a500b9f1c9bb6 Mon Sep 17 00:00:00 2001 From: tracer Date: Thu, 22 Sep 2022 18:54:54 +0200 Subject: [PATCH] added password encryption --- src/Entity/Apikey.php | 177 +++++++++++++++++++++++------------------- 1 file changed, 97 insertions(+), 80 deletions(-) diff --git a/src/Entity/Apikey.php b/src/Entity/Apikey.php index ba915b1..4f99015 100644 --- a/src/Entity/Apikey.php +++ b/src/Entity/Apikey.php @@ -2,89 +2,106 @@ namespace App\Entity; +use App\Controller\ConfigController; +use App\Controller\EncryptionController; +use Exception; +use SodiumException; + /** * */ class Apikey { - private int $id; - private string $name; - private string $apiTokenPrefix; - private string $apiToken; - - public function __construct(string $name, string $apiTokenPrefix, string $apiToken, int $id = 0) - { - $this->id = $id; - $this->name = $name; - $this->apiTokenPrefix = $apiTokenPrefix; - $this->apiToken = $apiToken; - } - - - /** - * @return String - */ - public function getApiToken(): string - { - return $this->apiToken; - } - - /** - * @return string - */ - public function getApiTokenPrefix(): string - { - return $this->apiTokenPrefix; - } - - - /** - * @return int - */ - public function getId(): int - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId(int $id): void - { - $this->id = $id; - } - - /** - * @return String - */ - public function getName(): string - { - return $this->name; - } - - /** - * @param string $apiTokenPrefix - */ - public function setApiTokenPrefix(string $apiTokenPrefix): void - { - $this->apiTokenPrefix = $apiTokenPrefix; - } - - /** - * @param String $apiToken - */ - public function setApiToken(string $apiToken): void - { - $this->apiToken = $apiToken; - } - - - /** - * @param String $name - */ - public function setName(string $name): void - { - $this->name = $name; - } - + + public function __construct( + private int $id = 0, + private string $name = '', + private string $apiTokenPrefix = '', + private string $apiToken = '', + private readonly string $passphrase = '' + ) + { + if ($this->passphrase) { + $configController = new ConfigController(); + $encryptionController = new EncryptionController(); + + $encryptionKey = $configController->getConfig(configKey: 'encryptionKey'); + + $this->apiTokenPrefix = strtok(string: $this->passphrase, token: '.'); + + try { + $this->apiToken = $encryptionController->safeEncrypt(message: $this->passphrase, key: $encryptionKey); + } catch (Exception|SodiumException $e) { + die($e->getMessage() . PHP_EOL); + } + } + } + + + /** + * @return String + */ + public function getApiToken(): string + { + return $this->apiToken; + } + + /** + * @return string + */ + public function getApiTokenPrefix(): string + { + return $this->apiTokenPrefix; + } + + + /** + * @return int + */ + public function getId(): int + { + return $this->id; + } + + /** + * @param int $id + */ + public function setId(int $id): void + { + $this->id = $id; + } + + /** + * @return String + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $apiTokenPrefix + */ + public function setApiTokenPrefix(string $apiTokenPrefix): void + { + $this->apiTokenPrefix = $apiTokenPrefix; + } + + /** + * @param String $apiToken + */ + public function setApiToken(string $apiToken): void + { + $this->apiToken = $apiToken; + } + + + /** + * @param String $name + */ + public function setName(string $name): void + { + $this->name = $name; + } + } \ No newline at end of file