79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
// Import ES6 Promise
|
|
import 'es6-promise/auto'
|
|
|
|
// Import System requirements
|
|
import Vue from 'vue'
|
|
import VueRouter from 'vue-router'
|
|
|
|
import { sync } from 'vuex-router-sync'
|
|
import routes from './routes'
|
|
import store from './store'
|
|
|
|
// Import Helpers for filters
|
|
import { domain, count, prettyDate, pluralize } from './filters'
|
|
|
|
// Import Views - Top level
|
|
import AppView from './components/App.vue'
|
|
|
|
// Import Install and register helper items
|
|
Vue.filter('count', count)
|
|
Vue.filter('domain', domain)
|
|
Vue.filter('prettyDate', prettyDate)
|
|
Vue.filter('pluralize', pluralize)
|
|
|
|
Vue.use(VueRouter)
|
|
|
|
// Routing logic
|
|
var router = new VueRouter({
|
|
routes: routes,
|
|
mode: 'history',
|
|
linkExactActiveClass: 'active',
|
|
scrollBehavior: function(to, from, savedPosition) {
|
|
return savedPosition || { x: 0, y: 0 }
|
|
}
|
|
})
|
|
|
|
// Some middleware to help us ensure the user is authenticated.
|
|
router.beforeEach((to, from, next) => {
|
|
if (
|
|
to.matched.some(record => record.meta.requiresAuth) &&
|
|
(!router.app.$store.state.token || router.app.$store.state.token === 'null')
|
|
) {
|
|
// this route requires auth, check if logged in
|
|
// if not, redirect to login page.
|
|
window.console.log('Not authenticated')
|
|
next({
|
|
path: '/login',
|
|
query: { redirect: to.fullPath }
|
|
})
|
|
} else {
|
|
next()
|
|
}
|
|
})
|
|
|
|
sync(store, router)
|
|
|
|
// Check local storage to handle refreshes
|
|
if (window.localStorage) {
|
|
var localUserString = window.localStorage.getItem('user') || 'null'
|
|
var localUser = JSON.parse(localUserString)
|
|
|
|
if (localUser && store.state.user !== localUser) {
|
|
store.commit('SET_USER', localUser)
|
|
store.commit('SET_TOKEN', window.localStorage.getItem('token'))
|
|
}
|
|
}
|
|
|
|
// Start out app!
|
|
// eslint-disable-next-line no-new
|
|
new Vue({
|
|
el: '#root',
|
|
router: router,
|
|
store: store,
|
|
render: h => h(AppView)
|
|
})
|
|
|
|
// change this. demo
|
|
window.bugsnagClient = window.bugsnag('02fe1c2caaf5874c50b6ee19534f5932')
|
|
window.bugsnagClient.use(window.bugsnag__vue(Vue))
|