From a648715edcac9fb46f4e696ac7fc35c3abe71966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 2 Sep 2025 14:36:27 +0200 Subject: [PATCH] fix: Use HintException instead of InvalidArgumentException MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To carry translated error messages intended for the end user, HintException is the correct class. Signed-off-by: Côme Chilliet --- .../lib/Controller/VerificationController.php | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/provisioning_api/lib/Controller/VerificationController.php b/apps/provisioning_api/lib/Controller/VerificationController.php index 38f355e0589..e89d8f1780c 100644 --- a/apps/provisioning_api/lib/Controller/VerificationController.php +++ b/apps/provisioning_api/lib/Controller/VerificationController.php @@ -9,7 +9,6 @@ declare(strict_types=1); namespace OCA\Provisioning_API\Controller; -use InvalidArgumentException; use OC\Security\Crypto; use OCP\Accounts\IAccountManager; use OCP\AppFramework\Controller; @@ -18,6 +17,7 @@ use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\OpenAPI; use OCP\AppFramework\Http\TemplateResponse; +use OCP\HintException; use OCP\IL10N; use OCP\IRequest; use OCP\IUserManager; @@ -54,13 +54,16 @@ class VerificationController extends Controller { try { if ($this->userSession->getUser()?->getUID() !== $userId) { // not a public page, hence getUser() must return an IUser - throw new InvalidArgumentException($this->l10n->t('Logged in account is not mail address owner')); + throw new HintException( + 'Logged in account is not mail address owner', + $this->l10n->t('Logged in account is not mail address owner'), + ); } $email = $this->crypto->decrypt($key); - } catch (\Exception $e) { + } catch (HintException $e) { return new TemplateResponse( 'core', 'error', [ - 'errors' => [['error' => $e->getMessage()]] + 'errors' => [['error' => $e->getHint()]] ], TemplateResponse::RENDER_AS_GUEST); } @@ -81,7 +84,10 @@ class VerificationController extends Controller { $throttle = false; try { if ($this->userSession->getUser()?->getUID() !== $userId) { - throw new InvalidArgumentException($this->l10n->t('Logged in account is not mail address owner')); + throw new HintException( + 'Logged in account is not mail address owner', + $this->l10n->t('Logged in account is not mail address owner'), + ); } $email = $this->crypto->decrypt($key); $ref = \substr(hash('sha256', $email), 0, 8); @@ -94,7 +100,10 @@ class VerificationController extends Controller { ->getPropertyByValue($email); if ($emailProperty === null) { - throw new InvalidArgumentException($this->l10n->t('Email was already removed from account and cannot be confirmed anymore.')); + throw new HintException( + 'Email was already removed from account and cannot be confirmed anymore.', + $this->l10n->t('Email was already removed from account and cannot be confirmed anymore.'), + ); } $emailProperty->setLocallyVerified(IAccountManager::VERIFIED); $this->accountManager->updateAccount($userAccount); @@ -106,8 +115,8 @@ class VerificationController extends Controller { $throttle = true; $error = $this->l10n->t('Could not verify mail because the token is invalid.'); } - } catch (InvalidArgumentException $e) { - $error = $e->getMessage(); + } catch (HintException $e) { + $error = $e->getHint(); } catch (\Exception $e) { $error = $this->l10n->t('An unexpected error occurred. Please contact your admin.'); }