Repository navigation
Amorçage base neuve : réparer le chargement du schéma et les rôles - #1
Merged
Merged
Conversation
…s rôles Cinq défauts empêchaient toute reconstruction from-scratch d'aboutir — tous masqués en dev local, où la connexion est superuser. - Découpage SQL : ré-écrit en mini-lexer. Il neutralise les « ; » nichés dans les commentaires -- , les chaînes '…' et les blocs $tag$…$tag$. Les en-têtes pg_dump (« -- Name: x; Type: TABLE; … ») étaient sinon éclatés en fragments exécutés tels quels — une seule table sur 49 était réellement créée. - check_function_bodies = false reposé sur la connexion de chargement : les fonctions à référence anticipée (dont get_user_for_login) échouaient, le filtre anti-bruit ayant écarté le SET du dump. - Méta-commandes psql (\restrict… — PG 17) désormais ignorées. - Rôles applicatifs accordés à l'utilisateur courant (GRANT … TO CURRENT_USER) pour que le SET ROLE du seed soit permis. - Privilèges runtime + contournement RLS : le dump étant --no-privileges, les rôles n'héritent d'aucun droit. On accorde SELECT/INSERT/… et, faute de pouvoir poser BYPASSRLS sur une base Render (propriétaire non-superuser), on crée une politique permissive « TO auth_bypass_rls USING (true) » sur chaque table à RLS — sinon /auth/login renvoie « permission denied for table users » puis un 401 systématique sur toute base reconstruite. Le seed insère désormais en tant que propriétaire (comme le runtime), le SET ROLE auth_bypass_rls d'origine ne fonctionnant que sous connexion superuser. Validé de bout en bout : reconstruction depuis une base vide → /auth/login 200. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
Le service de test provisionné hier ne démarrait pas (
/auth/loginen 500). L'investigation a montré que toute reconstruction d'une base neuve était silencieusement incomplète — une seule table sur 49 réellement créée, migrations calées àheadmalgré un schéma absent, seed et login cassés. Chaque défaut était masqué en dev local (connexion superuser).Cinq correctifs (un seul fichier,
scripts/init_db.py);dans les commentaires--, les chaînes'…'et les blocs$tag$…$tag$. Les en-têtes pg_dump étaient sinon éclatés en fragments exécutés (Type: TABLE…).check_function_bodies = falsereposé sur la connexion de chargement (fonctions à référence anticipée, dontget_user_for_login).\restrict, PG 17) ignorées.GRANT … TO CURRENT_USERpour autoriser leSET ROLEdu seed.--no-privileges; on accorde les droits et, faute deBYPASSRLSsur Render, on pose une politique permissiveTO auth_bypass_rlssur chaque table à RLS. Sinon/auth/login→ 401 sur toute base reconstruite.Le seed insère désormais en tant que propriétaire (comme le runtime).
Validation
Reconstruction depuis une base vide avec le seul
init_db→ schéma complet (m13, 55 tables), seed admin,/auth/loginHTTP 200 avec jeton émis par le service.🤖 Generated with Claude Code