import Vue from 'vue'
import VueRouter from 'vue-router'
import FinanzerView from '@/views/FinanzerView'
import Login from '@/views/Login'
import store from '@/store/index'
import BarView from '@/views/BarView'

Vue.use(VueRouter)

const routes = [
  {
    path: '/login',
    name: 'login',
    component: Login
  },
  {
    path: '/finanzer',
    name: 'finanzer',
    component: FinanzerView
  },
  {
    path: '/bar',
    name: 'bar',
    component: BarView
  },
  {
    path: '*',
    redirect: {
      name: 'login'
    }
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

router.beforeEach((to, from, next) => {
  store.dispatch('fetchAccessToken')
  let sites = ['/finanzer', '/bar']
  if (sites.includes(to.fullPath)) {
    if (to.fullPath === '/finanzer') {
      if (!store.state.login.user.group.includes('moneymaster')) {
        next('/login')
      }
    }
    if (to.fullPath === '/bar') {
      if (!store.state.login.user.group.includes('bar')) {
        next('/login')
      }
    }
    if (!store.state.login.user.accessToken) {
      next('/login')
    }
  }
  if (to.fullPath === '/login') {
    if (store.state.login.user.accessToken) {
      if (store.state.login.user.group.includes('moneymaster')) {
        next('/finanzer')
      } else if (store.state.login.user.group.includes('bar')) {
        next('/bar')
      }
    }
  }
  next()
})

export default router