` block) kept as fallback
**SettingsAccountTab.vue** created at `frontend/src/components/settings/`:
- Full AccountView content without the outer page wrapper (`` and `
` heading removed)
- All four sections: Account information, Two-factor authentication (TotpEnrollment), Change password (PasswordStrengthBar), Sessions (sign-out-all)
- All script setup logic ported: changePassword, disableTotp, onTotpEnrolled, signOutAll, all refs
- Import paths adjusted for new location (`../../stores/auth.js`, `../auth/...`, `../ui/...`)
**SettingsView.vue** updated:
- Added `{ id: 'account', label: 'Account' }` to tabs array
- Added `` panel
- Added `import SettingsAccountTab from '../components/settings/SettingsAccountTab.vue'`
## Verification Results
| Check | Result |
|-------|--------|
| `pytest tests/test_admin_api.py::test_create_user_writes_audit_log -v` | PASSED |
| `npm run build` | Exit 0, 156 modules transformed |
| `npm test` | 107/107 passed (11 test files) |
| `pytest -v` (full backend) | 343 passed, 1 pre-existing failure (test_extract_docx — missing docx module, unrelated) |
| 4 auth routes have `meta.layout:'auth'` | Confirmed (grep count = 4) |
| `/admin` has `meta.requiresAdmin` | Confirmed |
| `requiresAdmin` role check in `beforeEach` | Confirmed |
| `qrcode` in package.json dependencies | Confirmed (`"qrcode": "^1.5.4"`) |
| `QRCode.toDataURL` + `img` tag in TotpEnrollment | Confirmed |
| `SettingsAccountTab` imported and rendered in SettingsView | Confirmed |
## Deviations from Plan
None — plan executed exactly as written. Task 1 was verify-only; the fix was already present from plan 02-04 execution.
## Known Stubs
None. All functional paths are wired.
## Threat Flags
No new threat surface introduced. Changes are frontend-only layout/UX routing (Task 1 is backend verify-only with no code changes). The requiresAdmin guard closes T-02-GAP-01 (elevation of privilege). The auth layout conditional closes T-02-GAP-02 (information disclosure via sidebar on public routes).
## Self-Check: PASSED
Files confirmed present:
- frontend/src/App.vue (modified)
- frontend/src/router/index.js (modified)
- frontend/src/components/settings/SettingsAccountTab.vue (created)
- frontend/src/views/SettingsView.vue (modified)
- frontend/src/components/auth/TotpEnrollment.vue (modified)
- frontend/package.json (modified)
Commits confirmed:
- aa957d6 feat(02-06): auth layout switching + admin role guard (GAPs 2, 3, 4)
- c08ea42 feat(02-06): Account tab in SettingsView + QR code in TotpEnrollment (GAPs 3, 5)