feat: implémentation des sessions JWT avec cookies sécurisés (expiration 60 min)
Build and Push Docker Image / build-and-push (push) Successful in 1m24s
Build and Push Docker Image / build-and-push (push) Successful in 1m24s
This commit is contained in:
1 parent
b48853d186
commit
c3b10508d9
3 files changed
+58
-8
No files matched your search
+27
-1
@@ -21,4 +21,30 @@ def get_totp_uri(secret: str, username: str) -> str:
|
||||
def verify_totp(secret: str, code: str) -> bool:
|
||||
"""Vérifie le code à 6 chiffres soumis par l'utilisateur."""
|
||||
totp = pyotp.TOTP(secret)
|
||||
return totp.verify(code)
|
||||
return totp.verify(code)
|
||||
|
||||
import jwt
|
||||
from datetime import datetime, timedelta, timezone
|
||||
import os
|
||||
|
||||
# Dans l'idéal, cette clé secrète sera à placer dans votre fichier .env plus tard
|
||||
SECRET_KEY = os.getenv("SECRET_KEY", "`*\$Tu*CCc5hglT$mX'HykxERDljBz")
|
||||
ALGORITHM = "HS256"
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES = 60
|
||||
|
||||
def create_access_token(data: dict):
|
||||
"""Crée un jeton JWT valable 60 minutes."""
|
||||
to_encode = data.copy()
|
||||
expire = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
|
||||
to_encode.update({"exp": expire})
|
||||
return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
|
||||
|
||||
def verify_token(token: str):
|
||||
"""Vérifie la validité du jeton JWT."""
|
||||
try:
|
||||
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
|
||||
return payload
|
||||
except jwt.ExpiredSignatureError:
|
||||
return None # Le jeton a expiré (60 min écoulées)
|
||||
except jwt.InvalidTokenError:
|
||||
return None # Le jeton est invalide
|
||||
Reference in new issue
Block a user