From c08ea42b1bfc093f6a6ffc2f14f4680cefe1774d Mon Sep 17 00:00:00 2001
From: curo1305
Date: Sun, 31 May 2026 20:40:28 +0200
Subject: [PATCH] feat(02-06): Account tab in SettingsView + QR code in
TotpEnrollment (GAPs 3, 5)
- frontend/package.json: add qrcode@1.5.4 to runtime dependencies
- TotpEnrollment.vue: import QRCode; generate data URL in startSetup(); render img tag
- SettingsAccountTab.vue: new component with all AccountView content (2FA, password, sessions)
- SettingsView.vue: add Account tab rendering SettingsAccountTab; import SettingsAccountTab
---
frontend/package.json | 1 +
.../src/components/auth/TotpEnrollment.vue | 16 +-
.../settings/SettingsAccountTab.vue | 253 ++++++++++++++++++
frontend/src/views/SettingsView.vue | 5 +
4 files changed, 265 insertions(+), 10 deletions(-)
create mode 100644 frontend/src/components/settings/SettingsAccountTab.vue
diff --git a/frontend/package.json b/frontend/package.json
index 1bc493c..ce6a47b 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"pinia": "^2.1.0",
+ "qrcode": "^1.5.4",
"vue": "^3.4.0",
"vue-router": "^4.3.0"
},
diff --git a/frontend/src/components/auth/TotpEnrollment.vue b/frontend/src/components/auth/TotpEnrollment.vue
index d7bfa72..8753305 100644
--- a/frontend/src/components/auth/TotpEnrollment.vue
+++ b/frontend/src/components/auth/TotpEnrollment.vue
@@ -28,17 +28,10 @@
Open your authenticator app and scan this QR code, or enter the key manually.
-
+
-
Scan with your authenticator app using the link below, or enter the secret key manually:
-
- Open in authenticator app
-
+
Scan this QR code with your authenticator app:
+
@@ -115,6 +108,7 @@
diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue
index 708082c..ec1bd19 100644
--- a/frontend/src/views/SettingsView.vue
+++ b/frontend/src/views/SettingsView.vue
@@ -48,6 +48,9 @@
+
+
+
@@ -86,6 +89,7 @@ import { useRouter } from 'vue-router'
import SettingsPreferencesTab from '../components/settings/SettingsPreferencesTab.vue'
import SettingsAiTab from '../components/settings/SettingsAiTab.vue'
import SettingsCloudTab from '../components/settings/SettingsCloudTab.vue'
+import SettingsAccountTab from '../components/settings/SettingsAccountTab.vue'
const router = useRouter()
@@ -93,6 +97,7 @@ const tabs = [
{ id: 'preferences', label: 'Preferences' },
{ id: 'ai', label: 'AI Configuration' },
{ id: 'cloud', label: 'Cloud Storage' },
+ { id: 'account', label: 'Account' },
]
const activeTab = ref('preferences')