From 63ca0cf5d0b4fa6d2283e3951584c0d104daad41 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Fri, 22 Mar 2024 17:27:42 -0300 Subject: [PATCH] Fix way to get email when is using account as identify method Signed-off-by: Vitor Mattos --- .../SignatureMethod/EmailToken.php | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php b/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php index 7b7b465d61..ec93663569 100644 --- a/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php +++ b/lib/Service/IdentifyMethod/SignatureMethod/EmailToken.php @@ -24,6 +24,8 @@ namespace OCA\Libresign\Service\IdentifyMethod\SignatureMethod; +use OCA\Libresign\Exception\LibresignException; +use OCA\Libresign\Helper\JSActions; use OCA\Libresign\Service\IdentifyMethod\IdentifyMethodService; use Wobeto\EmailBlur\Blur; @@ -40,19 +42,32 @@ public function __construct( } public function toArray(): array { - $return = parent::toArray(); $entity = $this->getEntity(); + + if ($entity->getIdentifierKey() === 'email') { + $email = $entity->getIdentifierValue(); + } elseif ($entity->getIdentifierKey() === 'account') { + $signer = $this->identifyMethodService->getUserManager()->get($entity->getIdentifierValue()); + $email = $signer->getEMailAddress(); + } + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + throw new LibresignException(json_encode([ + 'action' => JSActions::ACTION_DO_NOTHING, + 'errors' => [$this->identifyMethodService->getL10n()->t('Invalid email')], + ])); + } + $return = parent::toArray(); + $return['identifyMethod'] = $entity->getIdentifierKey(); $return['needCode'] = empty($entity->getCode()) || empty($entity->getIdentifiedAtDate()) || empty($this->codeSentByUser); $return['hasConfirmCode'] = !empty($entity->getCode()); - $return['blurredEmail'] = $this->getBlurredEmail(); - $return['hashOfEmail'] = md5($this->getEntity()->getIdentifierValue()); + $return['blurredEmail'] = $this->blurEmail($email); + $return['hashOfEmail'] = md5($email); return $return; } - private function getBlurredEmail(): string { - $email = $this->getEntity()->getIdentifierValue(); + private function blurEmail(string $email): string { $blur = new Blur($email); return $blur->make(); }