QUA-002, premiere moitie. **Ce commit ne fait que reformater** : aucun changement de comportement, aucune ligne de logique touchee. 72 fichiers, 4 restaient deja conformes. Il est isole exprès, pour que `git log -p` sur les commits voisins reste lisible. `quote-style = "preserve"` etait deja pose dans pyproject.toml, ce qui evite le brassage guillemets simples / doubles : le diff porte sur les retours a la ligne, l indentation des appels longs et les virgules finales, pas sur le style de chaine. Verification : 263 tests passent avant et apres, ruff check propre. L activation en CI arrive dans le commit suivant, separement, pour que ce diff-ci ne contienne rien d autre. Co-Authored-By: Claude Opus 5 <[email protected]>
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_login import LoginManager
|
|
from flask_wtf.csrf import CSRFProtect
|
|
from werkzeug.security import generate_password_hash, check_password_hash
|
|
from flask_limiter import Limiter
|
|
from flask_limiter.util import get_remote_address
|
|
from flask_babel import Babel
|
|
|
|
# Database and extension initialization
|
|
db = SQLAlchemy()
|
|
login_manager = LoginManager()
|
|
login_manager.login_view = 'auth.login'
|
|
login_manager.login_message_category = 'info'
|
|
csrf = CSRFProtect()
|
|
|
|
# Internationalisation. French is the primary language of the site; English
|
|
# stays available. See app/i18n.py for how a locale is chosen.
|
|
babel = Babel()
|
|
|
|
# Rate limiter for brute-force protection
|
|
limiter = Limiter(key_func=get_remote_address, default_limits=["200 per day", "50 per hour"])
|
|
|
|
|
|
def hash_password(password):
|
|
"""
|
|
Hash a plain text password using werkzeug's security functions.
|
|
|
|
Args:
|
|
password (str): The plain text password to hash.
|
|
|
|
Returns:
|
|
str: The hashed password string.
|
|
"""
|
|
return generate_password_hash(password)
|
|
|
|
|
|
def check_password(password_hash, password):
|
|
"""
|
|
Verify a password against its hash.
|
|
|
|
Args:
|
|
password_hash (str): The stored password hash.
|
|
password (str): The plain text password to verify.
|
|
|
|
Returns:
|
|
bool: True if the password matches the hash, False otherwise.
|
|
"""
|
|
return check_password_hash(password_hash, password)
|