Skip to content

Commit c2a0965

Browse files
author
kabya
committed
fix: refresh token updates auth headers and sets realtime auth
1 parent 880a706 commit c2a0965

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

supabase/_async/client.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -323,19 +323,21 @@ def _get_auth_headers(self, authorization: Optional[str] = None) -> Dict[str, st
323323
"Authorization": authorization,
324324
}
325325

326-
def _listen_to_auth_events(
327-
self, event: AuthChangeEvent, session: Optional[Session]
328-
):
326+
def _listen_to_auth_events(self, event: AuthChangeEvent, session: Optional[Session]):
327+
original_auth = self._create_auth_header(self.supabase_key)
328+
329+
if self.options.headers.get("Authorization") == original_auth:
330+
return
331+
329332
access_token = self.supabase_key
330333
if event in ["SIGNED_IN", "TOKEN_REFRESHED", "SIGNED_OUT"]:
331-
# reset postgrest and storage instance on event change
332334
self._postgrest = None
333335
self._storage = None
334336
self._functions = None
335337
access_token = session.access_token if session else self.supabase_key
336-
self.options.headers["Authorization"] = self._create_auth_header(access_token)
337-
asyncio.create_task(self.realtime.set_auth(access_token))
338338

339+
self.options.headers["Authorization"] = self._create_auth_header(access_token)
340+
await self.realtime.set_auth(access_token)
339341

340342
async def create_client(
341343
supabase_url: str,

supabase/_sync/client.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -322,19 +322,22 @@ def _get_auth_headers(self, authorization: Optional[str] = None) -> Dict[str, st
322322
"Authorization": authorization,
323323
}
324324

325-
def _listen_to_auth_events(
326-
self, event: AuthChangeEvent, session: Optional[Session]
327-
):
325+
def _listen_to_auth_events(self, event: AuthChangeEvent, session: Optional[Session]):
326+
original_auth = self._create_auth_header(self.supabase_key)
327+
328+
if self.options.headers.get("Authorization") == original_auth:
329+
return
330+
328331
access_token = self.supabase_key
329332
if event in ["SIGNED_IN", "TOKEN_REFRESHED", "SIGNED_OUT"]:
330-
# reset postgrest and storage instance on event change
331333
self._postgrest = None
332334
self._storage = None
333335
self._functions = None
334336
access_token = session.access_token if session else self.supabase_key
335337
self.options.headers["Authorization"] = self._create_auth_header(access_token)
336338

337339

340+
338341
def create_client(
339342
supabase_url: str,
340343
supabase_key: str,

0 commit comments

Comments
 (0)