70 lines
1.8 KiB
JavaScript
Vendored
70 lines
1.8 KiB
JavaScript
Vendored
require('./bootstrap.js');
|
|
import './styles/theme.css';
|
|
require('./helper/autocloseMenu.js');
|
|
//window.VueRouter = require('vue-router').default;
|
|
//import VueRouter from 'vue-router';
|
|
import Util, { methods as utilMethods } from './util.js';
|
|
import routes from './routesIndex.js';
|
|
import OtpInput from "@bachdgvn/vue-otp-input";
|
|
|
|
Vue.component("v-otp-input", OtpInput);
|
|
|
|
Vue.use(VueRouter);
|
|
Vue.mixin(Util);
|
|
Vue.use(OtpInput);
|
|
|
|
const router = new VueRouter({
|
|
mode: 'history',
|
|
linkActiveClass: 'active',
|
|
routes
|
|
});
|
|
|
|
var publicVoterRouteNames = {
|
|
'Voter Login': true,
|
|
'Voter Verify': true,
|
|
'Physical Gate Display': true,
|
|
'Roulette Wheel Demo': true,
|
|
'penyata': true
|
|
};
|
|
|
|
router.beforeEach(function (to, from, next) {
|
|
if (to.name === 'Voter Login' && utilMethods.isAdminPortalSession()) {
|
|
var dest = utilMethods.getAdminEntryRoute();
|
|
return next(Object.assign({}, dest, { replace: true }));
|
|
}
|
|
|
|
var isAdminRoute = to.path.indexOf('/admin') === 0;
|
|
var isPublicVoterRoute = !!publicVoterRouteNames[to.name]
|
|
|| to.path.indexOf('/display/') === 0
|
|
|| to.path.indexOf('/demo/') === 0;
|
|
|
|
if (!isAdminRoute && !isPublicVoterRoute && !utilMethods.isLogin()) {
|
|
return next({ name: 'Voter Login', replace: true });
|
|
}
|
|
|
|
if (!isAdminRoute || to.name === 'Admin Login') {
|
|
return next();
|
|
}
|
|
if (!utilMethods.isLogin()) {
|
|
return next({ name: 'Admin Login', replace: true });
|
|
}
|
|
var role = localStorage.getItem('admin_role');
|
|
if (role === '3' && to.name !== 'Kehadiran Calon') {
|
|
return next({ name: 'Kehadiran Calon', replace: true });
|
|
}
|
|
next();
|
|
});
|
|
|
|
axios.interceptors.response.use(function (response) {
|
|
return response;
|
|
}, function (error) {
|
|
if (error.response && error.response.status === 401) {
|
|
utilMethods.handleUnauthorized(router);
|
|
}
|
|
return Promise.reject(error);
|
|
});
|
|
|
|
const app = new Vue({
|
|
router
|
|
}).$mount('#app');
|