From 2fda27a329307ac8475c4e51bca08e533fd4cf2c Mon Sep 17 00:00:00 2001 From: Hermes Date: Fri, 21 Aug 2026 16:35:04 +0200 Subject: [PATCH] fix(login): request-otp must insert otp_code (NOT NULL) for send_pin email Full edge-fn sync clobbered a live hotfix: repo request-otp only wrote otp_code_hash, but login_otps.otp_code is NOT NULL, so every request failed with 'Failed to generate OTP' and no PIN email was sent. Restore writing otp_code (n8n send_pin trigger emails it; verify still uses hash). --- supabase/functions/request-otp/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/supabase/functions/request-otp/index.ts b/supabase/functions/request-otp/index.ts index f5704d8..7ee6556 100644 --- a/supabase/functions/request-otp/index.ts +++ b/supabase/functions/request-otp/index.ts @@ -89,11 +89,14 @@ Deno.serve(async (request) => { const clientIp = getClientIp(request); const userAgent = request.headers.get("user-agent") || null; - // Insert with OTP hash only — no plaintext in DB + // Insert with OTP hash for verification. otp_code (plaintext) is also stored + // because DB has it NOT NULL and the send_pin trigger (→ n8n webhook) emails + // this exact code to the user. verify-otp still compares the SHA-256 hash. const { error: insertError } = await supabase.from("login_otps").insert({ email, name: userName, role: userRole, + otp_code: otp, otp_code_hash: otpCodeHash, ip_address: clientIp, user_agent: userAgent,