You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
18 lines
529 B
18 lines
529 B
const PUBLIC_PREFIXES = ["/share"];
|
|
const AUTH_PATHS = ["/login", "/register"];
|
|
|
|
function isPublic(toPath: string) {
|
|
return PUBLIC_PREFIXES.some(p => toPath.startsWith(p));
|
|
}
|
|
|
|
export default defineNuxtRouteMiddleware((to) => {
|
|
const { isLoggedIn } = useAuth();
|
|
|
|
if (isLoggedIn.value && AUTH_PATHS.includes(to.path)) {
|
|
return navigateTo("/inbox");
|
|
}
|
|
|
|
if (!AUTH_PATHS.includes(to.path) && !isPublic(to.path) && !isLoggedIn.value) {
|
|
return navigateTo("/login?redirect=" + encodeURIComponent(to.fullPath));
|
|
}
|
|
});
|
|
|