LDAP auto-provision: user cree DESACTIVE par defaut + role viewer (admin doit l'activer)

This commit is contained in:
Pierre & Lumière 2026-04-15 11:46:22 +02:00
parent 53d4f71607
commit f013aaaab6

View File

@ -47,17 +47,17 @@ async def login(request: Request, username: str = Form(...), password: str = For
log_login_failed(db, request, username) log_login_failed(db, request, username)
db.commit() db.commit()
return err_template(result.get("msg") or "Authentification LDAP echouee") return err_template(result.get("msg") or "Authentification LDAP echouee")
# Cree l'user en local avec role par defaut # Cree l'user DESACTIVE + sans permissions. Admin doit l'activer + permissionner.
default_role = result.get("default_role", "operator") default_role = result.get("default_role", "viewer")
db.execute(text(""" db.execute(text("""
INSERT INTO users (username, email, full_name, role, is_active, auth_type, password_hash) INSERT INTO users (username, email, full_name, role, is_active, auth_type, password_hash)
VALUES (:u, :e, :n, :r, true, 'ldap', '') VALUES (:u, :e, :n, :r, false, 'ldap', '')
"""), {"u": username, "e": result.get("email", ""), """), {"u": username, "e": result.get("email", ""),
"n": result.get("name", username), "r": default_role}) "n": result.get("name", username), "r": default_role})
db.commit() db.commit()
row = db.execute(text("SELECT id, username, password_hash, role, is_active, auth_type FROM users WHERE LOWER(username)=LOWER(:u)"), log_login_failed(db, request, username) # trace de l'auto-creation
{"u": username}).fetchone() db.commit()
ok = True return err_template("Compte cree mais en attente d'activation par un administrateur")
elif not row: elif not row:
log_login_failed(db, request, username) log_login_failed(db, request, username)
db.commit() db.commit()