From e412bc900a392ab67ddbc40e892bb69c92a9bb2a Mon Sep 17 00:00:00 2001 From: Wen Bo Xie Date: Sat, 4 Sep 2021 21:15:02 -0400 Subject: [PATCH] Add user_token when creating realtime channel subscription --- src/lib/SupabaseQueryBuilder.ts | 2 +- src/lib/SupabaseRealtimeClient.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/SupabaseQueryBuilder.ts b/src/lib/SupabaseQueryBuilder.ts index 0c102e7c..5ecdfbd8 100644 --- a/src/lib/SupabaseQueryBuilder.ts +++ b/src/lib/SupabaseQueryBuilder.ts @@ -23,7 +23,7 @@ export class SupabaseQueryBuilder extends PostgrestQueryBuilder { ) { super(url, { headers, schema }) - this._subscription = new SupabaseRealtimeClient(realtime, schema, table) + this._subscription = new SupabaseRealtimeClient(realtime, headers, schema, table) this._realtime = realtime } diff --git a/src/lib/SupabaseRealtimeClient.ts b/src/lib/SupabaseRealtimeClient.ts index 05ed3b87..0fadddd4 100644 --- a/src/lib/SupabaseRealtimeClient.ts +++ b/src/lib/SupabaseRealtimeClient.ts @@ -4,9 +4,15 @@ import { SupabaseEventTypes, SupabaseRealtimePayload } from './types' export class SupabaseRealtimeClient { subscription: RealtimeSubscription - constructor(socket: RealtimeClient, schema: string, tableName: string) { + constructor( + socket: RealtimeClient, + headers: { [key: string]: string }, + schema: string, + tableName: string + ) { + const userToken = headers['Authorization'].split(' ')[1] const topic = tableName === '*' ? `realtime:${schema}` : `realtime:${schema}:${tableName}` - this.subscription = socket.channel(topic) + this.subscription = socket.channel(topic, { user_token: userToken }) } private getPayloadRecords(payload: any) {