@@ -37,33 +37,48 @@ def _b64url_decode(data: str) -> bytes:
3737class PasskeyService :
3838 """Service for managing WebAuthn/Passkey authentication."""
3939
40- def __init__ (self , rp_id : str = None , rp_name : str = "TopicsFlow" ):
40+ def __init__ (self , db , rp_id = None , rp_name = None ):
4141 """
4242 Initialize passkey service.
4343
4444 Args:
4545 rp_id: Relying Party ID (your domain, e.g., 'localhost' or 'topicsflow.me')
4646 rp_name: Relying Party name (your app name)
4747 """
48- # Use environment variable or default
49- # Origin for WebAuthn (e.g., 'http://localhost:3000' or 'https://topicsflow.me')
50- self .origin = os .getenv ('FRONTEND_URL' , 'http://localhost:3000' )
51-
52- # Determine RP ID
53- if rp_id :
54- self .rp_id = rp_id
55- elif os .getenv ('PASSKEY_RP_ID' ):
56- self .rp_id = os .getenv ('PASSKEY_RP_ID' )
48+ self .db = db
49+
50+ # Determine environment
51+ # IS_AZURE is usually set in config.py or env, check here if env var
52+ self .is_azure = os .getenv ('IS_AZURE' , 'False' ).lower () == 'true'
53+
54+ if not self .is_azure :
55+ # Local Development Override
56+ # Force localhost settings to prevent accidental production configuration usage
57+ # This is critical for local testing if env vars like FRONTEND_URL are set to prod
58+ self .rp_id = 'localhost'
59+ self .origin = 'http://localhost:3000'
60+ logger .info ("Running in local mode: Forced Passkey RP_ID to localhost and Origin to http://localhost:3000" )
5761 else :
58- # Derive from FRONTEND_URL if not explicitly set
59- # This handles 'https://topicsflow.me' -> 'topicsflow.me'
60- from urllib .parse import urlparse
61- try :
62- parsed_url = urlparse (self .origin )
63- self .rp_id = parsed_url .hostname or 'localhost'
64- except Exception as e :
65- logger .warning (f"Failed to parse FRONTEND_URL for RP ID: { e } " )
66- self .rp_id = 'localhost'
62+ # Production / Azure Configuration
63+ # Use environment variable or default
64+ # Origin for WebAuthn (e.g., 'http://localhost:3000' or 'https://topicsflow.me')
65+ self .origin = os .getenv ('FRONTEND_URL' , 'http://localhost:3000' )
66+
67+ # Determine RP ID
68+ if rp_id :
69+ self .rp_id = rp_id
70+ elif os .getenv ('PASSKEY_RP_ID' ):
71+ self .rp_id = os .getenv ('PASSKEY_RP_ID' )
72+ else :
73+ # Derive from FRONTEND_URL if not explicitly set
74+ # This handles 'https://topicsflow.me' -> 'topicsflow.me'
75+ from urllib .parse import urlparse
76+ try :
77+ parsed_url = urlparse (self .origin )
78+ self .rp_id = parsed_url .hostname or 'localhost'
79+ except Exception as e :
80+ logger .warning (f"Failed to parse FRONTEND_URL for RP ID: { e } " )
81+ self .rp_id = 'localhost'
6782
6883 self .rp_name = rp_name or os .getenv ('APP_NAME' , 'TopicsFlow' )
6984
0 commit comments