mirror of
https://github.com/Luchexx/wacrm.git
synced 2026-11-02 09:19:51 +00:00
Merge pull request #38 from ArnasDon/fix/automations-meta-send-contact-ownership
fix(automations): scope meta-send contact lookup by user_id
This commit is contained in:
commit
3758711f5a
@ -52,13 +52,22 @@ type SendInput =
|
||||
async function sendViaMeta(input: SendInput): Promise<{ whatsapp_message_id: string }> {
|
||||
const db = supabaseAdmin()
|
||||
|
||||
// Scope the contact lookup by user_id. The engine uses the
|
||||
// service-role client (bypassing RLS), and the public
|
||||
// /api/automations/engine endpoint accepts contact_id from the
|
||||
// request body — without this filter, an authenticated user could
|
||||
// fire their own automations against another tenant's contact UUID
|
||||
// and send via their own WhatsApp config to that contact's phone.
|
||||
// Practical risk is low (UUIDs are unguessable) but the check is
|
||||
// cheap defense-in-depth.
|
||||
const { data: contact, error: contactErr } = await db
|
||||
.from('contacts')
|
||||
.select('id, phone')
|
||||
.eq('id', input.contactId)
|
||||
.eq('user_id', input.userId)
|
||||
.maybeSingle()
|
||||
if (contactErr || !contact?.phone) {
|
||||
throw new Error('contact phone missing')
|
||||
throw new Error('contact not found for this user')
|
||||
}
|
||||
|
||||
const sanitized = sanitizePhoneForMeta(contact.phone)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user