import type { preHandlerHookHandler } from "fastify";
import { AppRoute } from "../../routes.defs";
export const authenticatedOrLogin =
(): preHandlerHookHandler => async (request, reply) => {
if (request.session.data.authenticated === false) {
const parts = request.routerPath.split("/");
const params = request.params as Record<string, unknown>;
const redirectGotoUri = parts.map((part) => {
if (part.trim() === "") return part;
if (part.startsWith(":")) {
const paramKey = part.substring(1);
const param = params[paramKey];
if (param != null) return param;
return part;
}
return part;
});
const redirectAuthUri = [
request.namedViewsPathMap[AppRoute.AUTH_LOGIN],
`?after_login_goto=${redirectGotoUri.join("/")}`,
].join("");
reply.redirect(302, redirectAuthUri);
}
};