30 lines
641 B
TypeScript
30 lines
641 B
TypeScript
import { createApp } from 'vue'
|
|
import { createPinia } from 'pinia'
|
|
import App from './App.vue'
|
|
import router from './router'
|
|
import { useAuthStore } from './stores/auth'
|
|
import './assets/main.css'
|
|
import './assets/nexus-tokens.css'
|
|
|
|
const pinia = createPinia()
|
|
|
|
router.beforeEach(async to => {
|
|
const auth = useAuthStore(pinia)
|
|
await auth.initialize()
|
|
|
|
if (to.meta.public) {
|
|
return to.name === 'Login' && auth.isAuthenticated ? '/dashboard' : true
|
|
}
|
|
|
|
if (!auth.isAuthenticated) {
|
|
return { name: 'Login', query: { redirect: to.fullPath } }
|
|
}
|
|
|
|
return true
|
|
})
|
|
|
|
createApp(App)
|
|
.use(pinia)
|
|
.use(router)
|
|
.mount('#app')
|