@nuxtjs/hanko
Version:
Hanko integration for Nuxt
27 lines (26 loc) • 908 B
JavaScript
import { defineNuxtRouteMiddleware, navigateTo, useRouter, useAppConfig, useHanko, useRequestEvent } from "#imports";
export default defineNuxtRouteMiddleware(async (to) => {
const redirects = useAppConfig().hanko.redirects;
if (import.meta.server) {
const event = useRequestEvent();
if (event.context.hanko?.sub && to.path !== redirects.home) {
return navigateTo(redirects.home);
}
return;
}
const hanko = useHanko();
if (await hanko.user.getCurrent().catch(() => null) && to.path !== redirects.home) {
return navigateTo(redirects.home);
}
const removeHankoHook = hanko.onSessionCreated(() => {
if (!redirects.followRedirect || !to.query.redirect) {
navigateTo(redirects.success);
return;
}
navigateTo(to.query.redirect);
});
const removeRouterHook = useRouter().beforeEach(() => {
removeHankoHook();
removeRouterHook();
});
});