db.py — index users_ka_id créé APRÈS les migrations (base v1 sans colonne ka_id) ; auth.py — échec d'échange de code Google = redirection douce (fin du 500)
2 changed files +6 −2
modified
louka/auth.py
+3 −1
@@ -146,7 +146,9 @@ def google_callback(request: Request, code: str = "", state: str = "", | |||||
| 146 | "grant_type": "authorization_code", | 146 | "grant_type": "authorization_code", | ||
| 147 | "redirect_uri": f"{_base_url(request)}/api/auth/google/callback", | 147 | "redirect_uri": f"{_base_url(request)}/api/auth/google/callback", | ||
| 148 | }, timeout=20) | 148 | }, timeout=20) | ||
| 149 | − tok.raise_for_status() | 149 | + if tok.status_code != 200: | ||
| 150 | + # code déjà consommé (double rappel), expiré… -> retour doux à l'accueil | ||||
| 151 | + return RedirectResponse("/?login=erreur") | ||||
| 150 | access = tok.json().get("access_token") | 152 | access = tok.json().get("access_token") | ||
| 151 | info = requests.get(GOOGLE_USERINFO, timeout=20, | 153 | info = requests.get(GOOGLE_USERINFO, timeout=20, | ||
| 152 | headers={"Authorization": f"Bearer {access}"}).json() | 154 | headers={"Authorization": f"Bearer {access}"}).json() | ||
modified
louka/db.py
+3 −1
@@ -122,7 +122,6 @@ CREATE TABLE IF NOT EXISTS users ( | |||||
| 122 | created_at REAL, | 122 | created_at REAL, | ||
| 123 | last_login REAL | 123 | last_login REAL | ||
| 124 | ); | 124 | ); | ||
| 125 | −CREATE UNIQUE INDEX IF NOT EXISTS users_ka_id ON users(ka_id); | ||||
| 126 | 125 | ||||
| 127 | CREATE TABLE IF NOT EXISTS favorites ( | 126 | CREATE TABLE IF NOT EXISTS favorites ( | ||
| 128 | user_id INTEGER NOT NULL, | 127 | user_id INTEGER NOT NULL, | ||
@@ -179,6 +178,9 @@ def connect() -> sqlite3.Connection: | |||||
| 179 | for col, decl in cols.items(): | 178 | for col, decl in cols.items(): | ||
| 180 | if col not in existing: | 179 | if col not in existing: | ||
| 181 | con.execute(f"ALTER TABLE {table} ADD COLUMN {col} {decl}") | 180 | con.execute(f"ALTER TABLE {table} ADD COLUMN {col} {decl}") | ||
| 181 | + # index sur des colonnes de migration : APRÈS les ALTER TABLE (une base | ||||
| 182 | + # antérieure n'a pas encore la colonne au moment du CREATE INDEX) | ||||
| 183 | + con.execute("CREATE UNIQUE INDEX IF NOT EXISTS users_ka_id ON users(ka_id)") | ||||
| 182 | con.commit() | 184 | con.commit() | ||
| 183 | return con | 185 | return con | ||
| 184 | 186 | ||||
| 185 | 187 | ||||