33from fastapi import Depends , HTTPException , Request , status
44from fastapi .security import HTTPBearer , HTTPAuthorizationCredentials
55import logging
6+ import asyncio
67
78from .firebase import auth
89from .config import SKIP_TOKEN_AUTH_HEADER , SKIP_TOKEN_AUTH_KEY
@@ -12,7 +13,7 @@ class FirebaseIDTokenData(BaseModel):
1213 uid : str
1314
1415
15- def _verify_firebase_id_token (token : str ) -> FirebaseIDTokenData :
16+ async def _verify_firebase_id_token (token : str ) -> FirebaseIDTokenData :
1617 """Verify Firebase ID token and returns the UID.
1718
1819 Args:
@@ -22,7 +23,7 @@ def _verify_firebase_id_token(token: str) -> FirebaseIDTokenData:
2223 FirebaseIDTokenData: Pydantic model containing the user's firebase `uid`.
2324 """
2425 try :
25- user_data = auth .verify_id_token (
26+ user_data = await asyncio . to_thread ( auth .verify_id_token ,
2627 id_token = token , app = None , check_revoked = True , clock_skew_seconds = 10
2728 )
2829 return FirebaseIDTokenData (** user_data )
@@ -75,4 +76,4 @@ async def protected_route(current_user: FirebaseIDTokenData = Depends(get_curren
7576 raise HTTPException (
7677 status_code = status .HTTP_403_FORBIDDEN , detail = "Not authenticated"
7778 )
78- return _verify_firebase_id_token (credentials .credentials )
79+ return await _verify_firebase_id_token (credentials .credentials )
0 commit comments