UX consultation, trajets aller/retour et rafraîchissement des totaux
- Totaux : rafraîchissement immédiat du panneau (jour/mois/année + montant prévisionnel) après création/modification/suppression/réordonnancement d'un trajet, sans changer de jour (ViewChild + méthode publique rafraichir()). - Trajets Aller/Retour : case à cocher au formulaire ; la distance comptée est doublée (distance simple stockée + booléen AllerRetour, distance effective utilisée dans tous les agrégats : totaux, résumés, barème, régularisation, PDF). Migration TrajetAllerRetour. Badge « A/R » dans une colonne dédiée en début de ligne pour garder date/adresses alignées. - Mise en page de la page Trajets : vue à hauteur fixe où seule la liste défile ; colonne gauche figée (sélecteur de date + navigation, totaux, carte) et bande fixe (véhicule + bouton d'ajout) au-dessus de la liste. Layout applicatif global en pleine hauteur (app.component). - run-dev.sh : chargement de la clé JWT depuis .env (ou secret de dev aléatoire) et Auth__FrontendBaseUrl sur le frontend dev ; rappel du lien de reset journalisé. Build backend (solution) et frontend (production) OK.
This commit is contained in:
+36
@@ -29,6 +29,38 @@ if [[ -z "${ORS__ApiKey:-}" && -f "$RACINE/.env" ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- Authentification (dev) -------------------------------------------------
|
||||
# Clé de signature JWT : lue depuis .env (JWT_SECRET_KEY). Si absente, on génère
|
||||
# un secret ALÉATOIRE de développement (valable pour cette session). En dev, cela
|
||||
# signifie que les sessions existantes sont invalidées à chaque relance du script,
|
||||
# ce qui est acceptable ; en production, définis JWT_SECRET_KEY dans .env.
|
||||
if [[ -z "${JWT__SecretKey:-}" ]]; then
|
||||
JWT_KEY_FROM_ENV=""
|
||||
if [[ -f "$RACINE/.env" ]]; then
|
||||
JWT_KEY_FROM_ENV="$(grep -E '^JWT_SECRET_KEY=' "$RACINE/.env" | head -n1 | cut -d= -f2- || true)"
|
||||
fi
|
||||
# Ignore la valeur placeholder du .env.example si elle a été copiée telle quelle.
|
||||
if [[ -n "$JWT_KEY_FROM_ENV" && "$JWT_KEY_FROM_ENV" != "change-me-generate-a-long-random-secret" ]]; then
|
||||
export JWT__SecretKey="$JWT_KEY_FROM_ENV"
|
||||
echo "→ Clé JWT chargée depuis .env."
|
||||
else
|
||||
# Secret de dev aléatoire (>= 32 octets) : openssl si dispo, sinon /dev/urandom.
|
||||
if command -v openssl >/dev/null 2>&1; then
|
||||
export JWT__SecretKey="$(openssl rand -base64 48)"
|
||||
else
|
||||
export JWT__SecretKey="$(head -c 48 /dev/urandom | base64)"
|
||||
fi
|
||||
echo "⚠ Aucune clé JWT dans .env : secret de développement aléatoire généré (sessions invalidées à chaque relance)."
|
||||
fi
|
||||
fi
|
||||
|
||||
# URL de base du frontend pour les liens de réinitialisation (dev = ng serve sur 4200).
|
||||
export Auth__FrontendBaseUrl="${Auth__FrontendBaseUrl:-http://localhost:4200}"
|
||||
|
||||
# SMTP non configuré en dev : le lien de réinitialisation est journalisé dans la
|
||||
# sortie du backend (repli LoggingEmailService). Cherche « reset-password?token= »
|
||||
# dans les logs pour tester la réinitialisation sans email réel.
|
||||
|
||||
echo "→ Démarrage du backend sur http://localhost:8080 (base : $RACINE/backend/SchotzIadKmTracker.Api/trajets.db)"
|
||||
dotnet run --project "$RACINE/backend/SchotzIadKmTracker.Api" --urls http://localhost:8080 &
|
||||
PID_BACK=$!
|
||||
@@ -100,6 +132,10 @@ if attendre_frontend; then
|
||||
echo ""
|
||||
echo " Au premier chargement, fais Ctrl+Shift+R pour vider le cache navigateur."
|
||||
echo " Vérif : dans la console DevTools, 'window.Zone' doit renvoyer un objet."
|
||||
echo ""
|
||||
echo " Auth : à la 1re utilisation, crée le compte via /register puis connecte-toi."
|
||||
echo " Reset de mot de passe (dev) : le lien est journalisé dans la sortie backend"
|
||||
echo " ci-dessus (cherche « reset-password?token= »), aucun email n'est envoyé."
|
||||
echo "======================================================================"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user