2FAuth/resources/js_vue3/router/middlewares/authGuard.js

28 lines
867 B
JavaScript
Vendored

import authService from '@/services/authService'
export default async function authGuard({ to, next, nextMiddleware, stores }) {
const { user } = stores
// No authenticated user on the front-end side, we try to
// get an active user from the back-end side
if (! user.isAuthenticated) {
await authService.getCurrentUser({ returnError: true }).then(async (response) => {
const currentUser = response.data
await user.loginAs({
name: currentUser.name,
email: currentUser.email,
preferences: currentUser.preferences,
isAdmin: currentUser.is_admin,
})
})
.catch(error => {
// nothing to do
})
}
if (! user.isAuthenticated) {
next({ name: 'login' })
} else {
nextMiddleware()
}
}