import dash_bootstrap_components as dbc from dash import dcc, html, register_page from src.pages.connexion import linkedin_button NAME = "Inscription" register_page( __name__, path="/inscription", title="Inscription | colibre", name=NAME, description="Créer un compte colibre.", ) ERROR_MESSAGES = { "invalid_email": "Adresse email invalide.", "password_too_short": "Le mot de passe doit faire au moins 8 caractères.", "password_mismatch": "Les mots de passe ne correspondent pas.", "email_taken": "Un compte existe déjà avec cet email.", "email_send_failed": "Erreur technique lors de l'envoi de l'email. Réessayez plus tard.", } def layout(error: str | None = None, email: str | None = None, **_): from src.utils import TOUS_ABONNES alert = None if error and error in ERROR_MESSAGES: alert = dbc.Alert(ERROR_MESSAGES[error], color="danger") # Sous TOUS_ABONNES, on saute la page carte bancaire (mes-infos). linkedin_next = ( "/compte/abonnement" if TOUS_ABONNES else "/compte/abonnement/mes-infos" ) return dbc.Container( className="py-4", style={"maxWidth": "500px"}, children=[ html.H2("Créer un compte"), alert, html.Form( method="POST", action="/auth/signup", children=[ dcc.Input( type="hidden", id={"type": "csrf-input", "index": "signup"}, name="csrf_token", ), dbc.Label("Adresse email"), dbc.Input( type="email", name="email", required=True, value=email or "", className="mb-3", ), dbc.Label("Mot de passe (8 caractères minimum)"), dbc.Input( type="password", name="password", required=True, minLength=8, className="mb-3", ), dbc.Label("Confirmer le mot de passe"), dbc.Input( type="password", name="password_confirm", required=True, minLength=8, className="mb-3", ), dbc.Button("Créer le compte", type="submit", color="secondary"), ], ), html.Div("ou", className="text-center text-muted my-2"), linkedin_button(linkedin_next), html.Hr(), dcc.Link("Déjà un compte ? Se connecter", href="/connexion"), ], )