2nzi commited on
Commit
faff547
·
verified ·
1 Parent(s): 05e2d15

update main

Browse files
Files changed (1) hide show
  1. main.py +26 -4
main.py CHANGED
@@ -1,11 +1,33 @@
 
1
  from fastapi import FastAPI, Depends, HTTPException, status, Response
2
  from fastapi.middleware.cors import CORSMiddleware
3
  from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
4
  from firebase_admin import auth, credentials, firestore
5
  import firebase_admin
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  # Initialisation Firebase Admin
8
- cred = credentials.Certificate("serviceAccountKey.json")
9
  firebase_admin.initialize_app(cred)
10
  db = firestore.client()
11
 
@@ -36,18 +58,18 @@ def get_user(res: Response,
36
  # Vérification et décodage du token Firebase
37
  decoded_token = auth.verify_id_token(cred.credentials)
38
  user_id = decoded_token['uid']
39
-
40
  # Récupération du rôle de l'utilisateur depuis Firestore
41
  user_doc = db.collection('users').document(user_id).get()
42
  if not user_doc.exists:
43
  raise HTTPException(status_code=401, detail="Utilisateur non trouvé dans Firestore")
44
-
45
  # Extraction du rôle et ajout aux informations utilisateur
46
  user_data = user_doc.to_dict()
47
  user_role = user_data.get('role', 'user_extern') # Par défaut à 'user_extern' si le rôle n'existe pas
48
  decoded_token['role'] = user_role
49
  res.headers['WWW-Authenticate'] = 'Bearer realm="auth_required"'
50
-
51
  return decoded_token
52
  except Exception as err:
53
  raise HTTPException(
 
1
+
2
  from fastapi import FastAPI, Depends, HTTPException, status, Response
3
  from fastapi.middleware.cors import CORSMiddleware
4
  from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
5
  from firebase_admin import auth, credentials, firestore
6
  import firebase_admin
7
+ import os
8
+ from dotenv import load_dotenv
9
+
10
+ # Charger les variables d'environnement depuis le fichier .env
11
+ load_dotenv()
12
+
13
+ # Récupérer les variables d'environnement pour initialiser Firebase
14
+ firebase_credentials = os.getenv("FIREBASE_CREDENTIALS")
15
+
16
+ # Vérification de la présence de la clé
17
+ if not firebase_credentials:
18
+ raise ValueError("La variable d'environnement FIREBASE_CREDENTIALS n'est pas définie.")
19
+
20
+ # Charger les informations de la clé Firebase
21
+ import json
22
+ try:
23
+ firebase_credentials_dict = json.loads(firebase_credentials)
24
+ if not isinstance(firebase_credentials_dict, dict):
25
+ raise ValueError("FIREBASE_CREDENTIALS n'est pas un JSON valide.")
26
+ except json.JSONDecodeError as e:
27
+ raise ValueError("FIREBASE_CREDENTIALS n'est pas un JSON valide.") from e
28
 
29
  # Initialisation Firebase Admin
30
+ cred = credentials.Certificate(firebase_credentials_dict)
31
  firebase_admin.initialize_app(cred)
32
  db = firestore.client()
33
 
 
58
  # Vérification et décodage du token Firebase
59
  decoded_token = auth.verify_id_token(cred.credentials)
60
  user_id = decoded_token['uid']
61
+
62
  # Récupération du rôle de l'utilisateur depuis Firestore
63
  user_doc = db.collection('users').document(user_id).get()
64
  if not user_doc.exists:
65
  raise HTTPException(status_code=401, detail="Utilisateur non trouvé dans Firestore")
66
+
67
  # Extraction du rôle et ajout aux informations utilisateur
68
  user_data = user_doc.to_dict()
69
  user_role = user_data.get('role', 'user_extern') # Par défaut à 'user_extern' si le rôle n'existe pas
70
  decoded_token['role'] = user_role
71
  res.headers['WWW-Authenticate'] = 'Bearer realm="auth_required"'
72
+
73
  return decoded_token
74
  except Exception as err:
75
  raise HTTPException(