mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
import { verifyLogin } from '../graphql/verifyLogin'
|
|
import CONFIG from '../config'
|
|
|
|
const addNavigationGuards = (router, store, apollo, i18n) => {
|
|
// store token on `authenticate`
|
|
router.beforeEach(async (to, from, next) => {
|
|
if (to.path === '/authenticate' && to.query && to.query.token) {
|
|
store.commit('token', to.query.token)
|
|
await apollo
|
|
.query({
|
|
query: verifyLogin,
|
|
fetchPolicy: 'network-only',
|
|
})
|
|
.then((result) => {
|
|
const moderator = result.data.verifyLogin
|
|
if (moderator.isAdmin) {
|
|
i18n.locale = moderator.language
|
|
store.commit('moderator', moderator)
|
|
next({ path: '/' })
|
|
} else {
|
|
next({ path: '/not-found' })
|
|
}
|
|
})
|
|
.catch(() => {
|
|
next({ path: '/not-found' })
|
|
})
|
|
} else {
|
|
next()
|
|
}
|
|
})
|
|
|
|
// protect all routes but `not-found`
|
|
router.beforeEach((to, from, next) => {
|
|
if (
|
|
!CONFIG.DEBUG_DISABLE_AUTH && // we did not disabled the auth module for debug purposes
|
|
(!store.state.token || // we do not have a token
|
|
!store.state.moderator || // no moderator set in store
|
|
!store.state.moderator.isAdmin) && // user is no admin
|
|
to.path !== '/not-found' && // we are not on `not-found`
|
|
to.path !== '/logout' // we are not on `logout`
|
|
) {
|
|
next({ path: '/not-found' })
|
|
} else {
|
|
next()
|
|
}
|
|
})
|
|
}
|
|
|
|
export default addNavigationGuards
|