diff --git a/.env.example b/.env.example index bf254c3..9487c48 100644 --- a/.env.example +++ b/.env.example @@ -10,6 +10,9 @@ ZEN_CURRENCY=CAD ZEN_CURRENCY_SYMBOL=$ ZEN_SUPPORT_EMAIL=support@exemple.com +# PROXY (activer si derrière un reverse proxy) +ZEN_TRUST_PROXY=false + # DATABASE ZEN_DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/postgres ZEN_DATABASE_URL_DEV=postgres://USER:PASSWORD@HOST:PORT/postgres_dev diff --git a/src/features/auth/actions.js b/src/features/auth/actions.js index 80b57e7..ed81e8c 100644 --- a/src/features/auth/actions.js +++ b/src/features/auth/actions.js @@ -121,7 +121,8 @@ export async function loginAction(formData) { const botCheck = validateAntiBotFields(formData); if (!botCheck.valid) return { success: false, error: botCheck.error }; - const ip = await getClientIp(); + const h = await headers(); + const ip = getIpFromHeaders(h); const rl = enforceRateLimit(ip, 'login'); if (rl && !rl.allowed) { return { success: false, error: `Trop de tentatives. Réessayez dans ${formatRetryAfter(rl.retryAfterMs)}.` }; @@ -129,8 +130,8 @@ export async function loginAction(formData) { const email = formData.get('email'); const password = formData.get('password'); - - const result = await login({ email, password }); + const userAgent = h.get('user-agent') || null; + const result = await login({ email, password }, { ipAddress: ip !== 'unknown' ? ip : null, userAgent }); // An HttpOnly cookie is the only safe transport for session tokens; setting it // here keeps the token out of any JavaScript-readable response payload.