1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-06-27 16:36:00 +00:00

Avoid non-validated OTP to be enabled

The OTP code must be required when enabling OTP. If the provided code is wrong, disable OTP, redirect and notice the user.
This commit is contained in:
Jeremy Benoist 2025-04-11 15:46:57 +02:00
parent 01ffc6c3d5
commit 262f674245
No known key found for this signature in database
GPG key ID: 7168D5DD29F38552
4 changed files with 13 additions and 10 deletions

View file

@ -57,5 +57,5 @@ parameters:
- -
message: "#^Method FOS\\\\UserBundle\\\\Model\\\\UserManagerInterface\\:\\:updateUser()#" message: "#^Method FOS\\\\UserBundle\\\\Model\\\\UserManagerInterface\\:\\:updateUser()#"
count: 6 count: 7
path: src/Wallabag/CoreBundle/Controller/ConfigController.php path: src/Wallabag/CoreBundle/Controller/ConfigController.php

View file

@ -402,12 +402,14 @@ class ConfigController extends AbstractController
throw new BadRequestHttpException('Bad CSRF token.'); throw new BadRequestHttpException('Bad CSRF token.');
} }
$user = $this->getUser();
$isValid = $googleAuthenticator->checkCode( $isValid = $googleAuthenticator->checkCode(
$this->getUser(), $user,
$request->get('_auth_code') $request->get('_auth_code')
); );
if (true === $isValid) { if ($isValid) {
$this->addFlash( $this->addFlash(
'notice', 'notice',
'flashes.config.notice.otp_enabled' 'flashes.config.notice.otp_enabled'
@ -417,14 +419,14 @@ class ConfigController extends AbstractController
} }
$this->addFlash( $this->addFlash(
'two_factor', 'notice',
'scheb_two_factor.code_invalid' 'flashes.config.notice.otp_code_invalid'
); );
$this->addFlash( $user->setGoogleAuthenticatorSecret(null);
'notice', $user->setBackupCodes(null);
'scheb_two_factor.code_invalid'
); $this->userManager->updateUser($user, true);
return $this->redirect($this->generateUrl('config') . '#set3'); return $this->redirect($this->generateUrl('config') . '#set3');
} }

View file

@ -45,7 +45,7 @@
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<label for="_auth_code">{{ "auth_code"|trans({}, 'SchebTwoFactorBundle') }}</label> <label for="_auth_code">{{ "auth_code"|trans({}, 'SchebTwoFactorBundle') }}</label>
<input id="_auth_code" type="text" autocomplete="off" name="_auth_code" /> <input id="_auth_code" type="text" autocomplete="off" name="_auth_code" required="required" />
</div> </div>
</div> </div>
</div> </div>

View file

@ -668,6 +668,7 @@ flashes:
archived_reset: Archived entries deleted archived_reset: Archived entries deleted
otp_enabled: Two-factor authentication enabled otp_enabled: Two-factor authentication enabled
otp_disabled: Two-factor authentication disabled otp_disabled: Two-factor authentication disabled
otp_code_invalid: Invalid two-factor authentication code
tagging_rules_imported: Tagging rules imported tagging_rules_imported: Tagging rules imported
tagging_rules_not_imported: Error while importing tagging rules tagging_rules_not_imported: Error while importing tagging rules
ignore_origin_rules_deleted: 'Ignore origin rule deleted' ignore_origin_rules_deleted: 'Ignore origin rule deleted'