From 98e42ec6ffd245f522bc1cbceda0d3f84d3330b5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 May 2022 15:00:15 +0900 Subject: enhance: Display TOTP Register URL Close #7261 Co-Authored-By: tamaina --- packages/backend/src/server/api/endpoints/i/2fa/register.ts | 8 +++++--- packages/client/src/pages/settings/2fa.vue | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'packages') diff --git a/packages/backend/src/server/api/endpoints/i/2fa/register.ts b/packages/backend/src/server/api/endpoints/i/2fa/register.ts index d5e1b19e54..33f5717728 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/register.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/register.ts @@ -2,8 +2,8 @@ import bcrypt from 'bcryptjs'; import * as speakeasy from 'speakeasy'; import * as QRCode from 'qrcode'; import config from '@/config/index.js'; -import define from '../../../define.js'; import { UserProfiles } from '@/models/index.js'; +import define from '../../../define.js'; export const meta = { requireCredential: true, @@ -40,15 +40,17 @@ export default define(meta, paramDef, async (ps, user) => { }); // Get the data URL of the authenticator URL - const dataUrl = await QRCode.toDataURL(speakeasy.otpauthURL({ + const url = speakeasy.otpauthURL({ secret: secret.base32, encoding: 'base32', label: user.username, issuer: config.host, - })); + }); + const dataUrl = await QRCode.toDataURL(url); return { qr: dataUrl, + url, secret: secret.base32, label: user.username, issuer: config.host, diff --git a/packages/client/src/pages/settings/2fa.vue b/packages/client/src/pages/settings/2fa.vue index 9ebf5101cd..01dd9b74a2 100644 --- a/packages/client/src/pages/settings/2fa.vue +++ b/packages/client/src/pages/settings/2fa.vue @@ -52,8 +52,9 @@ -
  • {{ i18n.ts._2fa.step2 }}
  • -
  • {{ i18n.ts._2fa.step3 }}
    +
  • {{ i18n.ts._2fa.step2 }}

    {{ $ts._2fa.step2Url }}
    {{ data.url }}

  • +
  • + {{ i18n.ts._2fa.step3 }}
    {{ i18n.ts.done }}
  • -- cgit v1.2.3-freya