frontend/middleware/auth.global.ts
SauceyRed 55f4f0401b
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
fix: v not included before API version number
2025-06-01 01:44:18 +02:00

43 lines
1.5 KiB
TypeScript

export default defineNuxtRouteMiddleware(async (to, from) => {
console.log("to.fullPath:", to.fullPath);
const loading = useState("loading");
const accessToken = useCookie("access_token").value;
if (["/login", "/register"].includes(to.path)) {
console.log("path is login or register");
const apiBase = useCookie("api_base");
console.log("apiBase gotten:", apiBase.value);
if (!apiBase.value) {
const requestUrl = useRequestURL();
console.log("request url:", requestUrl.href);
const apiVersion = useRuntimeConfig().public.apiVersion;
console.log("api version:", apiVersion);
console.log("apiBase not set");
const { status, data: gorbTxt } = await useFetch(`${requestUrl.protocol}//${requestUrl.host}/.well-known/gorb.txt`, { responseType: "text" });
if (status.value == "success" && gorbTxt.value) {
console.log("got gorb.txt:", gorbTxt.value);
const parsed = parseWellKnown(gorbTxt.value as string);
if (parsed.ApiBaseUrl) {
apiBase.value = `${parsed.ApiBaseUrl}/v${apiVersion}`;
console.log("set apiBase to:", parsed.ApiBaseUrl);
}
}
}
if (accessToken) {
return await navigateTo("/");
}
return;
};
if (!accessToken) {
loading.value = true;
console.log("set loading to true");
const { refresh } = useAuth();
console.log("hi");
await refresh();
const query = new URLSearchParams();
query.set("redirect_to", to.path);
loading.value = false;
console.log("set loading to false");
return await navigateTo("/login?" + (query ?? ""));
}
})