supabase-community / realtime-py

A Python Client for Phoenix Channels
MIT License
118 stars 47 forks source link

Python realtime with RLS #86

Open TomasRences opened 4 months ago

TomasRences commented 4 months ago

Bug report

Describe the bug

Unable to catch event if policy checking if user is authentificated exists on table.

To Reproduce

Python client code:

from realtime.connection import Socket

SUPABASE_URL = "project_id"
SUPABASE_KEY = "anon_key"

realtime_url = f"wss://{SUPABASE_URL}/realtime/v1/websocket?apikey={SUPABASE_KEY}"

def callback(event):
    print(event)

s = Socket(realtime_url)
s.connect()

channel = s.set_channel("realtime:*")
channel.join().on("*", callback)
s.listen()

It is work for public tables, but when we want to enable RLS and allow to CRUD only for authentificated users with following policy:

CREATE POLICY "User Is Authentificated" ON "public"."myTable"
AS PERMISSIVE FOR ALL
TO authenticated
USING (true)

Expected behavior

Be able to authentificate with Bearer JWT token as user

System information

SohaibAnwaar commented 2 months ago

PLease fix this

fullstackwebdev commented 1 week ago

is this why I am only getting INSERTs (public info) but not UPDATES (I guess RLS forbids these events?), even I am using SERVICE ROLE KEY?