SSO KA — adopte le ka_id émis par le hub groupe-ka (source de vérité) ; génération locale en secours seulement
1 changed file +13 −1
modified
louka/auth.py
+13 −1
@@ -205,7 +205,19 @@ def ka_callback(request: Request, ka_token: str = "", state: str = ""): | ||
| 205 | 205 | (hub_key, email, name, picture, now, now)) |
| 206 | 206 | uid, role = cur.lastrowid, None |
| 207 | 207 | con.commit() |
| 208 | − _ensure_ka_id(con, uid) | |
| 208 | + # KA ID : créé À LA SOURCE par le hub (groupe-ka.com) et transporté dans | |
| 209 | + # le jeton — on l'adopte tel quel ; génération locale seulement en secours | |
| 210 | + # (vieux jeton sans claim ka_id). | |
| 211 | + hub_ka = (claims.get("ka_id") or "").strip() | |
| 212 | + if hub_ka: | |
| 213 | + import sqlite3 | |
| 214 | + try: | |
| 215 | + con.execute("UPDATE users SET ka_id=? WHERE id=?", (hub_ka, uid)) | |
| 216 | + con.commit() | |
| 217 | + except sqlite3.IntegrityError: | |
| 218 | + pass # même KA ID déjà porté par une autre ligne locale : on garde | |
| 219 | + else: | |
| 220 | + _ensure_ka_id(con, uid) | |
| 209 | 221 | con.close() |
| 210 | 222 | |
| 211 | 223 | session = _sign({ |
| 212 | 224 | |