22 lines
694 B
TypeScript
22 lines
694 B
TypeScript
import { NavigationGuard } from 'vue-router';
|
|
import { UserRouteName } from '@/router/user';
|
|
import { LoginErrorCode } from '@/types/login-error-code.model';
|
|
import { AUTH_ACCESS_TOKEN } from '@/constants';
|
|
|
|
export const authGuardIfNeeded: NavigationGuard = async function (to, from, next) {
|
|
if (to.meta.requiredAuth !== true) return next();
|
|
|
|
// We can't use "currentUser" from apollo here because we may not have loaded the user from the local storage yet
|
|
if (!localStorage.getItem(AUTH_ACCESS_TOKEN)) {
|
|
return next({
|
|
name: UserRouteName.LOGIN,
|
|
query: {
|
|
code: LoginErrorCode.NEED_TO_LOGIN,
|
|
redirect: to.fullPath,
|
|
},
|
|
});
|
|
}
|
|
|
|
return next();
|
|
};
|