index.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import middlewarePipeline from "@/router/middlewarePipeline";
  3. import { useUserStore } from '@/stores/user'
  4. import { useTwofaccounts } from '@/stores/twofaccounts'
  5. import Start from '../views/Start.vue'
  6. import Accounts from '../views/Accounts.vue'
  7. import Capture from '../views/twofaccounts/Capture.vue'
  8. import CreateUpdateAccount from '../views/twofaccounts/CreateUpdate.vue'
  9. import EditAccount from '../views/twofaccounts/Edit.vue'
  10. import ImportAccount from '../views/twofaccounts/Import.vue'
  11. import QRcodeAccount from '../views/twofaccounts/QRcode.vue'
  12. import Groups from '../views/groups/Groups.vue'
  13. import CreateUpdateGroup from '../views/groups/CreateUpdate.vue'
  14. import Login from '../views/auth/Login.vue'
  15. import Register from '../views/auth/Register.vue'
  16. // import Autolock from './views/auth/Autolock.vue'
  17. import PasswordRequest from '../views/auth/password/Request.vue'
  18. // import PasswordReset from './views/auth/password/Reset.vue'
  19. import WebauthnLost from '../views/auth/webauthn/Lost.vue'
  20. // import WebauthnRecover from './views/auth/webauthn/Recover.vue'
  21. import SettingsOptions from '../views/settings/Options.vue'
  22. import SettingsAccount from '../views/settings/Account.vue'
  23. import SettingsOAuth from '../views/settings/OAuth.vue'
  24. import SettingsWebAuthn from '../views/settings/WebAuthn.vue'
  25. import EditCredential from '../views/settings/Credentials/Edit.vue'
  26. import Errors from '../views/Error.vue'
  27. import About from '../views/About.vue'
  28. import authGuard from './middlewares/authGuard'
  29. import starter from './middlewares/starter'
  30. import noEmptyError from './middlewares/noEmptyError'
  31. const router = createRouter({
  32. history: createWebHistory('/'),
  33. routes: [
  34. { path: '/start', name: 'start', component: Start, meta: { middlewares: [authGuard] } },
  35. { path: '/capture', name: 'capture', component: Capture, meta: { middlewares: [authGuard] } },
  36. { path: '/accounts', name: 'accounts', component: Accounts, meta: { middlewares: [authGuard, starter] }, alias: '/' },
  37. { path: '/account/create', name: 'createAccount', component: CreateUpdateAccount, meta: { middlewares: [authGuard] } },
  38. { path: '/account/import', name: 'importAccounts', component: ImportAccount, meta: { middlewares: [authGuard] } },
  39. { path: '/account/:twofaccountId/edit', name: 'editAccount', component: CreateUpdateAccount, meta: { middlewares: [authGuard] }, props: true },
  40. { path: '/account/:twofaccountId/qrcode', name: 'showQRcode', component: QRcodeAccount, meta: { middlewares: [authGuard] } },
  41. { path: '/groups', name: 'groups', component: Groups, meta: { middlewares: [authGuard] }, props: true },
  42. { path: '/group/create', name: 'createGroup', component: CreateUpdateGroup, meta: { middlewares: [authGuard] } },
  43. { path: '/group/:groupId/edit', name: 'editGroup', component: CreateUpdateGroup, meta: { middlewares: [authGuard] }, props: true },
  44. { path: '/settings/options', name: 'settings.options', component: SettingsOptions, meta: { middlewares: [authGuard], showAbout: true } },
  45. { path: '/settings/account', name: 'settings.account', component: SettingsAccount, meta: { middlewares: [authGuard], showAbout: true } },
  46. { path: '/settings/oauth', name: 'settings.oauth.tokens', component: SettingsOAuth, meta: { middlewares: [authGuard], showAbout: true, props: true } },
  47. { path: '/settings/webauthn/:credentialId/edit', name: 'settings.webauthn.editCredential', component: EditCredential, meta: { middlewares: [authGuard], showAbout: true }, props: true },
  48. { path: '/settings/webauthn', name: 'settings.webauthn.devices', component: SettingsWebAuthn, meta: { middlewares: [authGuard], showAbout: true } },
  49. { path: '/login', name: 'login', component: Login, meta: { disabledWithAuthProxy: true, showAbout: true } },
  50. { path: '/register', name: 'register', component: Register, meta: { disabledWithAuthProxy: true, showAbout: true } },
  51. // { path: '/autolock', name: 'autolock',component: Autolock, meta: { disabledWithAuthProxy: true, showAbout: true } },
  52. { path: '/password/request', name: 'password.request', component: PasswordRequest, meta: { disabledWithAuthProxy: true, showAbout: true } },
  53. // { path: '/user/password/reset', name: 'password.reset', component: PasswordReset, meta: { disabledWithAuthProxy: true, showAbout: true } },
  54. { path: '/webauthn/lost', name: 'webauthn.lost', component: WebauthnLost, meta: { disabledWithAuthProxy: true, showAbout: true } },
  55. // { path: '/webauthn/recover', name: 'webauthn.recover', component: WebauthnRecover, meta: { disabledWithAuthProxy: true, showAbout: true } },
  56. { path: '/about', name: 'about', component: About, meta: { showAbout: true } },
  57. { path: '/error', name: 'genericError', component: Errors, meta: { middlewares: [noEmptyError], err: null } },
  58. // { path: '/404', name: '404',component: Errors, props: true },
  59. // { path: '*', redirect: { name: '404' } },
  60. // Lazy loaded view
  61. { path: '/about', name: 'about', component: () => import('../views/About.vue') }
  62. ]
  63. })
  64. router.beforeEach((to, from, next) => {
  65. const middlewares = to.meta.middlewares
  66. const user = useUserStore()
  67. const twofaccounts = useTwofaccounts()
  68. const stores = { user: user, twofaccounts: twofaccounts }
  69. const context = { to, from, next, stores }
  70. if (!middlewares) {
  71. return next();
  72. }
  73. middlewares[0]({
  74. ...context,
  75. next: middlewarePipeline(context, middlewares, 1),
  76. });
  77. })
  78. router.afterEach((to, from) => {
  79. to.meta.title = trans('titles.' + to.name)
  80. document.title = to.meta.title
  81. })
  82. export default router