feat(auth): CLI-Tool für Notfall-User-Verwaltung + besseres Login-Logging
- app/cli.py: list / create / reset / promote / delete / verify Aufruf: .venv/bin/python -m app.cli <befehl> - Login-Endpoint loggt jetzt getrennt "User nicht gefunden" vs. "Passwort falsch" inkl. Hash-Länge — erlaubt Diagnose ohne Code-Änderung
This commit is contained in:
@@ -49,11 +49,19 @@ def needs_setup(session: Session = Depends(get_session)):
|
||||
|
||||
@router.post("/login")
|
||||
def login(payload: LoginIn, request: Request, session: Session = Depends(get_session)):
|
||||
user = get_user_by_username(session, payload.username.strip())
|
||||
if not user or not verify_password(payload.password, user.password_hash):
|
||||
username = payload.username.strip()
|
||||
user = get_user_by_username(session, username)
|
||||
if not user:
|
||||
log.warning("Login fehlgeschlagen: User '%s' nicht gefunden", username)
|
||||
raise HTTPException(status.HTTP_401_UNAUTHORIZED, "Benutzername oder Passwort falsch")
|
||||
if not verify_password(payload.password, user.password_hash):
|
||||
log.warning(
|
||||
"Login fehlgeschlagen: Passwort falsch für user=%s (hash_len=%d, prefix=%s)",
|
||||
user.username, len(user.password_hash), user.password_hash[:7],
|
||||
)
|
||||
raise HTTPException(status.HTTP_401_UNAUTHORIZED, "Benutzername oder Passwort falsch")
|
||||
request.session["user_id"] = user.id
|
||||
log.info("Login: user=%s id=%d admin=%s", user.username, user.id, user.is_admin)
|
||||
log.info("Login OK: user=%s id=%d admin=%s", user.username, user.id, user.is_admin)
|
||||
return _user_dict(user)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user