34 lines
968 B
TypeScript
34 lines
968 B
TypeScript
// SECURITE:
|
|
// Ce middleware pose automatiquement le cookie d'authentification pour tout
|
|
// visiteur de l'interface web. Ce comportement repose sur l'hypothèse que
|
|
// Supervisor n'est exposé qu'à un réseau de confiance ou derrière un contrôle
|
|
// d'accès externe. Si l'application devient publiquement accessible, ce
|
|
// mécanisme ne constitue pas une authentification utilisateur.
|
|
export default defineEventHandler((event) => {
|
|
const path = event.path || event.node.req.url || ""
|
|
|
|
if (path.startsWith("/api/")) {
|
|
return
|
|
}
|
|
|
|
const runtimeConfig = useRuntimeConfig(event)
|
|
const expectedToken = runtimeConfig.apiSecretKey
|
|
|
|
if (!expectedToken) {
|
|
return
|
|
}
|
|
|
|
if (getCookie(event, "api_auth_token") === expectedToken) {
|
|
return
|
|
}
|
|
|
|
const secureCookie = process.env.AUTH_COOKIE_SECURE === "true"
|
|
|
|
setCookie(event, "api_auth_token", expectedToken, {
|
|
httpOnly: true,
|
|
sameSite: "lax",
|
|
secure: secureCookie,
|
|
path: "/"
|
|
})
|
|
})
|