From b2276071d4058349f25f5264bfddbaa2282a7d16 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 1 Jul 2019 20:43:53 +0300 Subject: [PATCH] Fixed 2FA regenerate for Flex Users --- CHANGELOG.md | 1 + classes/plugin/AdminController.php | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0a42d1f..29496c00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ * Fixed possibility to override already existing translation by `Save As Language` * Fixed missing default translation if page used plain `.md` file extension without language code * Fixed wrong translation showing up as page fallback language + * Fixed 2FA regenerate for Flex Users # v1.10.0-beta.2 ## 06/21/2019 diff --git a/classes/plugin/AdminController.php b/classes/plugin/AdminController.php index ce5531a3..a1e2cb6a 100644 --- a/classes/plugin/AdminController.php +++ b/classes/plugin/AdminController.php @@ -235,18 +235,22 @@ class AdminController extends AdminBaseController $secret = $twoFa->createSecret(); $image = $twoFa->getQrImageData($user->username, $secret); - // Save secret into the user file. - $file = $user->file(); - if ($file->exists()) { - $content = (array)$file->content(); - $content['twofa_secret'] = $secret; - $file->save($content); - $file->free(); - } - - // Change secret in the session. $user->set('twofa_secret', $secret); + // TODO: data user can also use save, but please test it before removing this code. + if ($user instanceof \Grav\Common\User\DataUser\User) { + // Save secret into the user file. + $file = $user->file(); + if ($file->exists()) { + $content = (array)$file->content(); + $content['twofa_secret'] = $secret; + $file->save($content); + $file->free(); + } + } else { + $user->save(); + } + $this->admin->json_response = ['status' => 'success', 'image' => $image, 'secret' => preg_replace('|(\w{4})|', '\\1 ', $secret)]; } catch (\Exception $e) { $this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()];