routes.js 5.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. Vue.use(Router)
  4. import Start from './views/Start'
  5. import Capture from './views/Capture'
  6. import Accounts from './views/Accounts'
  7. import CreateAccount from './views/twofaccounts/Create'
  8. import EditAccount from './views/twofaccounts/Edit'
  9. import ImportAccount from './views/twofaccounts/Import'
  10. import QRcodeAccount from './views/twofaccounts/QRcode'
  11. import Groups from './views/Groups'
  12. import CreateGroup from './views/groups/Create'
  13. import EditGroup from './views/groups/Edit'
  14. import Login from './views/auth/Login'
  15. import Register from './views/auth/Register'
  16. import Autolock from './views/auth/Autolock'
  17. import PasswordRequest from './views/auth/password/Request'
  18. import PasswordReset from './views/auth/password/Reset'
  19. import WebauthnLost from './views/auth/webauthn/Lost'
  20. import WebauthnRecover from './views/auth/webauthn/Recover'
  21. import SettingsOptions from './views/settings/Options'
  22. import SettingsAccount from './views/settings/Account'
  23. import SettingsOAuth from './views/settings/OAuth'
  24. import SettingsWebAuthn from './views/settings/WebAuthn'
  25. import EditCredential from './views/settings/Credentials/Edit'
  26. import GeneratePAT from './views/settings/PATokens/Create'
  27. import Errors from './views/Error'
  28. import About from './views/About'
  29. const router = new Router({
  30. mode: 'history',
  31. routes: [
  32. { path: '/start', name: 'start', component: Start, meta: { requiresAuth: true }, props: true },
  33. { path: '/capture', name: 'capture', component: Capture, meta: { requiresAuth: true }, props: true },
  34. { path: '/accounts', name: 'accounts', component: Accounts, meta: { requiresAuth: true }, alias: '/', props: true },
  35. { path: '/account/create', name: 'createAccount', component: CreateAccount, meta: { requiresAuth: true } },
  36. { path: '/account/import', name: 'importAccounts', component: ImportAccount, meta: { requiresAuth: true } },
  37. { path: '/account/:twofaccountId/edit', name: 'editAccount', component: EditAccount, meta: { requiresAuth: true } },
  38. { path: '/account/:twofaccountId/qrcode', name: 'showQRcode', component: QRcodeAccount, meta: { requiresAuth: true } },
  39. { path: '/groups', name: 'groups', component: Groups, meta: { requiresAuth: true }, props: true },
  40. { path: '/group/create', name: 'createGroup', component: CreateGroup, meta: { requiresAuth: true } },
  41. { path: '/group/:groupId/edit', name: 'editGroup', component: EditGroup, meta: { requiresAuth: true }, props: true },
  42. { path: '/settings/options', name: 'settings.options', component: SettingsOptions, meta: { requiresAuth: true, showAbout: true } },
  43. { path: '/settings/account', name: 'settings.account', component: SettingsAccount, meta: { requiresAuth: true, showAbout: true } },
  44. { path: '/settings/oauth', name: 'settings.oauth.tokens', component: SettingsOAuth, meta: { requiresAuth: true, showAbout: true } },
  45. { path: '/settings/oauth/pat/create', name: 'settings.oauth.generatePAT', component: GeneratePAT, meta: { requiresAuth: true, showAbout: true } },
  46. { path: '/settings/webauthn/:credentialId/edit', name: 'settings.webauthn.editCredential', component: EditCredential, meta: { requiresAuth: true, showAbout: true }, props: true },
  47. { path: '/settings/webauthn', name: 'settings.webauthn.devices', component: SettingsWebAuthn, meta: { requiresAuth: true, showAbout: true } },
  48. { path: '/login', name: 'login', component: Login, meta: { disabledWithAuthProxy: true, showAbout: true } },
  49. { path: '/register', name: 'register', component: Register, meta: { disabledWithAuthProxy: true, showAbout: true } },
  50. { path: '/autolock', name: 'autolock',component: Autolock, meta: { disabledWithAuthProxy: true, showAbout: true } },
  51. { path: '/password/request', name: 'password.request', component: PasswordRequest, meta: { disabledWithAuthProxy: true, showAbout: true } },
  52. { path: '/user/password/reset', name: 'password.reset', component: PasswordReset, meta: { disabledWithAuthProxy: true, showAbout: true } },
  53. { path: '/webauthn/lost', name: 'webauthn.lost', component: WebauthnLost, meta: { disabledWithAuthProxy: true, showAbout: true } },
  54. { path: '/webauthn/recover', name: 'webauthn.recover', component: WebauthnRecover, meta: { disabledWithAuthProxy: true, showAbout: true } },
  55. { path: '/about', name: 'about',component: About, meta: { showAbout: true } },
  56. { path: '/flooded', name: 'flooded',component: Errors, props: true },
  57. { path: '/error', name: 'genericError',component: Errors, props: true },
  58. { path: '/404', name: '404',component: Errors, props: true },
  59. { path: '*', redirect: { name: '404' } }
  60. ],
  61. });
  62. let isFirstLoad = true;
  63. router.beforeEach((to, from, next) => {
  64. document.title = router.app.$options.i18n.t('titles.' + to.name)
  65. if( to.name === 'accounts') {
  66. to.params.isFirstLoad = isFirstLoad ? true : false
  67. isFirstLoad = false;
  68. }
  69. if (to.matched.some(record => record.meta.disabledWithAuthProxy)) {
  70. if (window.appConfig.proxyAuth) {
  71. next({ name: 'accounts' })
  72. }
  73. else next()
  74. }
  75. else next()
  76. });
  77. router.afterEach(to => {
  78. Vue.$storage.set('lastRoute', to.name)
  79. });
  80. export default router