mobilizon/js/src/router/guards/auth-guard.ts

23 lines
676 B
TypeScript

import { NavigationGuard } from "vue-router";
import { UserRouteName } from "@/router/user";
import { AUTH_ACCESS_TOKEN } from "@/constants";
import { LoginErrorCode } from "@/types/enums";
export const authGuardIfNeeded: NavigationGuard = async (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();
};