- Add EmailTemplateRenderer class to send-auth-otp edge function - Wrap OTP email content in master template with brutalist design - Email now includes proper header, footer, and styling - No changes needed to checkout flow (uses auth page for registration) Benefits: - Professional branded emails with ACCESS HUB header - Consistent brutalist design across all emails - Responsive layout - Better email client compatibility
3.7 KiB
3.7 KiB
Deploy OTP Email Fix
Problem
The send-auth-otp edge function was trying to insert into notification_logs table which doesn't exist, causing the function to crash AFTER sending the email. This meant:
- ✅ Email was sent by Mailketing API
- ❌ Function crashed before returning success
- ❌ Frontend might have shown error
Solution
Removed all references to notification_logs table from the edge function.
Deployment Steps
1. SSH into your server
ssh root@lovable.backoffice.biz.id
2. Navigate to the project directory
cd /path/to/your/project
3. Pull the latest changes
git pull origin main
4. Deploy the edge function
# Option A: If using Supabase CLI
supabase functions deploy send-auth-otp
# Option B: If manually copying files
cp supabase/functions/send-auth-otp/index.ts /path/to/supabase/functions/send-auth-otp/index.ts
# Then restart the edge function container
docker-compose restart edge-functions
# or
docker restart $(docker ps -q --filter 'name=supabase_edge_runtime')
5. Verify deployment
# Check if function is loaded
supabase functions list
# Should show:
# send-auth-otp ...
# verify-auth-otp ...
# send-email-v2 ...
6. Test the fix
# Test with curl
curl -X POST https://lovable.backoffice.biz.id/functions/v1/send-auth-otp \
-H "Authorization: Bearer YOUR_SERVICE_ROLE_KEY" \
-H "Content-Type: application/json" \
-d '{"user_id":"TEST_USER_ID","email":"test@example.com"}'
# Expected response:
# {"success":true,"message":"OTP sent successfully"}
7. Test full registration flow
- Open browser to https://with.dwindi.com/auth
- Register with new email
- Check email inbox
- Should receive OTP code
What Changed
File: supabase/functions/send-auth-otp/index.ts
Before:
// Log notification
await supabase
.from('notification_logs')
.insert({
user_id,
email: email,
notification_type: 'auth_email_verification',
status: 'sent',
provider: 'mailketing',
error_message: null,
});
After:
// Note: notification_logs table doesn't exist, skipping logging
Troubleshooting
If email still not received:
-
Check edge function logs:
docker logs $(docker ps -q --filter 'name=supabase_edge_runtime') | tail -50 -
Check if OTP was created:
SELECT * FROM auth_otps ORDER BY created_at DESC LIMIT 1; -
Check notification settings:
SELECT platform_name, from_name, from_email, api_token FROM notification_settings LIMIT 1; -
Verify email template:
SELECT key, name, is_active, LENGTH(email_body_html) as html_length FROM notification_templates WHERE key = 'auth_email_verification'; -
Test email sending directly:
curl -X POST https://lovable.backoffice.biz.id/functions/v1/send-email-v2 \ -H "Authorization: Bearer YOUR_SERVICE_ROLE_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": "your@email.com", "api_token": "YOUR_MAILKETING_TOKEN", "from_name": "Test", "from_email": "test@with.dwindi.com", "subject": "Test Email", "html_body": "<h1>Test</h1>" }'
Success Criteria
✅ Edge function returns {"success":true}
✅ No crashes in edge function logs
✅ OTP created in database
✅ Email received with OTP code
✅ OTP verification works
✅ User can login after verification
Next Steps
After successful deployment:
- Test registration with multiple email addresses
- Test OTP verification flow
- Test login after verification
- Test "resend OTP" functionality
- Test expired OTP (wait 15 minutes)
- Test wrong OTP code