Fix email reply access and threading

This commit is contained in:
gpt-engineer-app[bot]
2025-10-28 18:38:57 +00:00
parent adbb4e5813
commit 6af788d406
2 changed files with 25 additions and 4 deletions

View File

@@ -38,12 +38,16 @@ const handler = async (req: Request): Promise<Response> => {
return createErrorResponse({ message: 'Unauthorized' }, 401, corsHeaders); return createErrorResponse({ message: 'Unauthorized' }, 401, corsHeaders);
} }
// Verify admin role // Verify admin, moderator, or superuser role
const { data: isAdmin, error: roleError } = await supabase const { data: isSuperuser } = await supabase
.rpc('has_role', { _user_id: user.id, _role: 'superuser' });
const { data: isAdmin } = await supabase
.rpc('has_role', { _user_id: user.id, _role: 'admin' }); .rpc('has_role', { _user_id: user.id, _role: 'admin' });
const { data: isModerator } = await supabase
.rpc('has_role', { _user_id: user.id, _role: 'moderator' });
if (roleError || !isAdmin) { if (!isSuperuser && !isAdmin && !isModerator) {
edgeLogger.warn('Non-admin attempted email reply', { edgeLogger.warn('Non-privileged user attempted email reply', {
requestId: tracking.requestId, requestId: tracking.requestId,
userId: user.id userId: user.id
}); });

View File

@@ -177,6 +177,23 @@ const handler = async (req: Request): Promise<Response> => {
const ticketNumber = submission.ticket_number || 'PENDING'; const ticketNumber = submission.ticket_number || 'PENDING';
const messageId = `<${ticketNumber}.${submission.id}@thrillwiki.com>`; const messageId = `<${ticketNumber}.${submission.id}@thrillwiki.com>`;
// Insert initial message into email thread
await supabase
.from('contact_email_threads')
.insert({
submission_id: submission.id,
direction: 'inbound',
from_email: email.trim().toLowerCase(),
to_email: adminEmail,
subject: subject.trim(),
body_text: message.trim(),
message_id: messageId,
metadata: {
category: category,
name: name.trim()
}
});
if (forwardEmailKey) { if (forwardEmailKey) {
// Send admin notification // Send admin notification
fetch('https://api.forwardemail.net/v1/emails', { fetch('https://api.forwardemail.net/v1/emails', {