AxL95 commited on
Commit
f0599a3
·
verified ·
1 Parent(s): c37bcc1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -8
app.py CHANGED
@@ -39,7 +39,14 @@ db = mongo_client[db_name]
39
  app = FastAPI()
40
  app.add_middleware(
41
  CORSMiddleware,
42
- allow_origins=["*"],
 
 
 
 
 
 
 
43
  allow_credentials=True,
44
  allow_methods=["*"],
45
  allow_headers=["*"],
@@ -73,27 +80,53 @@ async def login(request: Request, response: Response):
73
  "expires_at": datetime.utcnow() + timedelta(days=7)
74
  })
75
 
76
- # Définir le cookie de session
77
  response.set_cookie(
78
  key="session_id",
79
  value=session_id,
80
- httponly=True,
81
  max_age=7*24*60*60, # 7 jours
82
- samesite="lax"
 
 
83
  )
84
 
85
- return {"success": True, "username": username, "user_id": user_id}
 
 
 
 
 
 
 
 
 
86
 
87
- except HTTPException as he:
88
- raise he
89
  except Exception as e:
 
90
  raise HTTPException(status_code=500, detail=str(e))
91
 
92
 
93
  async def get_current_user(request: Request):
 
94
  session_id = request.cookies.get("session_id")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  if not session_id:
96
- raise HTTPException(status_code=401, detail="Non authentifié")
97
 
98
  # Vérifier si la session existe et n'est pas expirée
99
  session = db.sessions.find_one({
 
39
  app = FastAPI()
40
  app.add_middleware(
41
  CORSMiddleware,
42
+ # Spécifiez les origines exactes au lieu de "*"
43
+ allow_origins=[
44
+ "https://axl95-medically.hf.space", # URL de votre espace HF
45
+ "https://huggingface.co",
46
+ "http://localhost:3000",
47
+ "http://localhost:7860",
48
+ "http://0.0.0.0:7860"
49
+ ],
50
  allow_credentials=True,
51
  allow_methods=["*"],
52
  allow_headers=["*"],
 
80
  "expires_at": datetime.utcnow() + timedelta(days=7)
81
  })
82
 
83
+ # Cookie configuré pour fonctionner sur HF Spaces
84
  response.set_cookie(
85
  key="session_id",
86
  value=session_id,
87
+ httponly=False, # Permettre à JavaScript d'accéder au cookie
88
  max_age=7*24*60*60, # 7 jours
89
+ samesite="none", # Obligatoire pour le cross-site
90
+ secure=True, # Obligatoire avec samesite=none
91
+ path="/" # Accessible sur tout le domaine
92
  )
93
 
94
+ # Log pour débogage
95
+ print(f"Session créée: {session_id} pour l'utilisateur {user_id}")
96
+
97
+ # Renvoyer le session_id dans la réponse pour permettre le stockage manuel si nécessaire
98
+ return {
99
+ "success": True,
100
+ "username": username,
101
+ "user_id": user_id,
102
+ "session_id": session_id # Permet de stocker la session côté client
103
+ }
104
 
 
 
105
  except Exception as e:
106
+ print(f"Erreur login: {str(e)}")
107
  raise HTTPException(status_code=500, detail=str(e))
108
 
109
 
110
  async def get_current_user(request: Request):
111
+ # 1. Essayer d'obtenir la session du cookie
112
  session_id = request.cookies.get("session_id")
113
+ print(f"Cookie de session reçu: {session_id[:5] if session_id else 'None'}")
114
+
115
+ # 2. Si pas de cookie, vérifier l'en-tête d'autorisation
116
+ if not session_id:
117
+ auth_header = request.headers.get("Authorization")
118
+ if auth_header and auth_header.startswith("Bearer "):
119
+ session_id = auth_header.replace("Bearer ", "")
120
+ print(f"Session d'autorisation reçue: {session_id[:5]}...")
121
+
122
+ # 3. Si toujours pas de session, vérifier les paramètres de requête
123
+ if not session_id:
124
+ session_id = request.query_params.get("session_id")
125
+ if session_id:
126
+ print(f"Session des paramètres de requête: {session_id[:5]}...")
127
+
128
  if not session_id:
129
+ raise HTTPException(status_code=401, detail="Non authentifié - Aucune session trouvée")
130
 
131
  # Vérifier si la session existe et n'est pas expirée
132
  session = db.sessions.find_one({