feat: normalize email login and improve theme handling
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 27s

Normalize email input by stripping whitespace and converting to lowercase in login endpoint, remove EmailStr validation in favor of plain string type, move dark mode class toggle from Layout to App component for better initialization, add theme toggle button to login page, and set dark mode as default theme when no preference is stored
This commit is contained in:
2026-07-09 12:23:28 +02:00
parent 4fd7e5acbf
commit dea27b5459
6 changed files with 27 additions and 15 deletions
+2 -2
View File
@@ -16,7 +16,8 @@ router = APIRouter(prefix="/auth", tags=["auth"])
@router.post("/login", response_model=TokenPair)
def login(payload: LoginRequest, db: Session = Depends(get_db)) -> TokenPair:
user = db.scalar(select(User).where(User.email == payload.email))
email = payload.email.strip().lower()
user = db.scalar(select(User).where(User.email == email))
if not user or not verify_password(payload.password, user.password_hash):
if user:
user.failed_login_attempts += 1
@@ -41,4 +42,3 @@ def me(user: CurrentUser) -> User:
def logout(user: CurrentUser, db: Session = Depends(get_db)) -> dict[str, str]:
write_audit(db, action="logout", object_type="user", object_id=user.id, user_id=user.id)
return {"status": "ok", "at": datetime.utcnow().isoformat()}