Fixed 2FA regenerate for Flex Users

This commit is contained in:
Matias Griese
2019-07-01 20:43:53 +03:00
parent 30e38312c5
commit b2276071d4
2 changed files with 15 additions and 10 deletions

View File

@@ -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()];