30 lines
887 B
TypeScript
30 lines
887 B
TypeScript
import urlJoin from "url-join";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const session = await getUserSession(event)
|
|
const conf = useRuntimeConfig(event)
|
|
const base_url = conf.app.baseURL
|
|
|
|
// normalize and remove base URL
|
|
function stripBaseUrl(fullPath: string) {
|
|
const base = base_url.replace(/\/+$/, '') // remove trailing slash
|
|
return fullPath.startsWith(base) ? fullPath.slice(base.length) || '/' : fullPath
|
|
}
|
|
|
|
let path = stripBaseUrl(event.node.req.url!)
|
|
|
|
|
|
if (path?.startsWith("/settings"))
|
|
// @ts-ignore
|
|
if (!session.secure?.user_id)
|
|
return sendRedirect(event, urlJoin(base_url,"/login"), 302);
|
|
|
|
else if (path?.startsWith("/login"))
|
|
// @ts-ignore
|
|
if (session.secure?.user_id)
|
|
return sendRedirect(event, urlJoin(base_url,"/"), 302);
|
|
|
|
|
|
return;
|
|
})
|