Spaces:
Sleeping
Sleeping
| """Password hashing and session helpers.""" | |
| from __future__ import annotations | |
| from passlib.hash import bcrypt | |
| from starlette.requests import Request | |
| from starlette.responses import RedirectResponse | |
| def hash_password(plain: str) -> str: | |
| return bcrypt.hash(plain) | |
| def verify_password(plain: str, hashed: str) -> bool: | |
| return bcrypt.verify(plain, hashed) | |
| def get_current_user_id(request: Request) -> int | None: | |
| return request.session.get("user_id") | |
| def require_login(request: Request): | |
| uid = get_current_user_id(request) | |
| if not uid: | |
| return RedirectResponse("/login", status_code=302) | |
| return None | |