51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
import Vue from 'vue'
|
|
import VueRouter from 'vue-router'
|
|
import auth_wrapper from './vue/auth/wrapper.vue'
|
|
import noauth_wrapper from './vue/noauth/wrapper.vue'
|
|
|
|
|
|
/* (1) Setup: Vue, VueRouter, Authentication, ClientDriver-s */
|
|
require('./setup.js').default.then(() => {
|
|
|
|
/* (2) Set router hooks to load page data before loading content */
|
|
gs.get.router.beforeEach((to, from, next) => {
|
|
|
|
// {1} Ignore null name //
|
|
if( to.name == null )
|
|
return next();
|
|
|
|
// {2} Get appropriate page location //
|
|
let auth_folder = (gs.get.authed) ? 'auth' : 'noauth';
|
|
let page_file = to.name || gs.get.routes[auth_folder][0].name;
|
|
let fullpath = `${auth_folder}/${page_file}`;
|
|
|
|
// {3} Load page script //
|
|
if( fullpath === 'noauth/login')
|
|
return require('./page/noauth/login.js').default.then(next);
|
|
|
|
if( fullpath === 'noauth/register')
|
|
return require('./page/noauth/register.js').default.then(next);
|
|
|
|
if( fullpath === 'auth/channel')
|
|
return require('./page/auth/channel.js').default.then(next);
|
|
|
|
// {4} Let VueRouter do the magic //
|
|
// next();
|
|
|
|
});
|
|
|
|
|
|
/* (3) Select appropriate wrapper */
|
|
const wrapper = (gs.get.authed) ? auth_wrapper : noauth_wrapper;
|
|
|
|
|
|
/* (4) Render view */
|
|
Vue.use(VueRouter);
|
|
new Vue({
|
|
el: '#vue',
|
|
router: gs.get.router,
|
|
render(h){ return h(wrapper); }
|
|
});
|
|
|
|
});
|