-
4.1 - Replit Agent-3 > Introduction à Next.js / React / TypeScript
-
4.2 - Next.js > Structure de la webapp (Landing + Wizard multi-étapes)
-
7.1 Postman / cURL > Structure d’un appel /jsonrpc
-
8.1 - Grafana Cloud > Intégrer Supabase / Grafana pour les logs n8n
-
9.1 - n8n + Odoo > Collecte et anonymisation des données pour IA
4.1.8 — Génération d’un lien magique (1 h)
🔐 4.1.8 — Génération d’un lien magique (1 h)
🎯 Objectif : UX friction-free pour les aidants.
Sous-thèmes :
- Pourquoi éviter les logins ?
- Token à usage unique via n8n
- URL encapsulée dans WhatsApp
- Expiration automatique
- Lecture côté Next server
Atelier pratique :
Générer un lien :
https://webapp.com/onboarding?t=abc123
🪄 Slide 1 — Titre & Objectif
🔐 4.1.8 — Génération d’un lien magique
🎯 Objectif : créer une UX sans friction pour les aidants
- Remplacer les logins / mots de passe par un lien magique
- Sécuriser la connexion avec un token à usage unique
- Intégrer le lien dans WhatsApp (meta Cloud API / Twilio)
- Gérer l’expiration automatiquement dans n8n
- Lire / valider le token côté Next.js Server
🚪 Slide 2 — Pourquoi éviter les logins ?
- Les aidants → non techniques, veulent aller vite
- Un login classique ⇢ perte de 40–60 % des utilisateurs
-
Objectif du parcours :
- Répondre au questionnaire senior + aidant
- En 2 clics
- Sans compte, sans mot de passe
-
Le lien magique =
✔ pas de friction
✔ sécurisé
✔ adapté mobile
✔ cohérent avec WhatsApp-first
🧩 Slide 3 — Architecture du Magic Link
Aidant → WhatsApp → Lien magic ↘ ↘ n8n → Token → URL signée ↘ Next.js Server ↘ Session temporaire
- n8n génère un token aléatoire
-
Le token est stocké avec :
- téléphone
- expiration
- statut (unused/used)
-
L’URL envoyée à l’aidant :
https://webapp.com/onboarding?t=<token> - Next.js vérifie le token et ouvre la session
🔑 Slide 4 — Token à usage unique
Caractéristiques du token :
- Longueur : 32 à 64 chars
- Type : alphanumérique + entropie élevée
- Usage : 1 seule validation
-
Stockage :
- soit dans n8n (Data Store)
- soit via une mini base Supabase / Redis
- Champs enregistrés :
| Champ | Exemple |
|---|---|
| token | abc123efg… |
| aidant_phone | +261… |
| expires_at | now + 1h |
| used | false |
Après validation → used = true.
💬 Slide 5 — Intégration WhatsApp
- Canal principal pour les aidants
-
Envoi du lien via :
✔ Meta Cloud API
✔ Twilio WhatsApp API
✔ Ringover (option)
Message type :
Bonjour 👋,
Cliquez ici pour finaliser votre questionnaire aidant :
https://webapp.com/onboarding?t=abc123
(Lien actif 60 minutes)
- Le token n’apparaît pas comme sensible
- Le lien est clickable directement
⏳ Slide 6 — Expiration automatique
Gestion de l’expiration dans n8n :
-
Lors de la génération du token :
expires_at = now() + 60 minutes -
Lors de la validation côté WebApp :
- Si now > expires_at → rejet
- Si used = true → rejet
-
Cron n8n (toutes les nuits) :
- Suppression / nettoyage des tokens expirés
Pourquoi 60 min ?
→ assez long pour un aidant, assez court pour rester safe
🖥️ Slide 7 — Lecture côté Next.js (Server Side)
Dans Next.js (route /onboarding/page.tsx ou middleware) :
Pseudo-code :
export async function GET(req) { const token = req.nextUrl.searchParams.get("t"); const record = await fetchFromN8nOrDB(token); if (!record || record.used || record.expires_at < Date.now()) { return redirect("/expired"); } // Marquer comme utilisé await markTokenAsUsed(token); // Créer session temporaire cookies().set("session", record.aidant_phone, { maxAge: 3600 }); return <OnboardingForm />; }
- Validation toujours server-side
- Pas de lecture token côté client
- Session limitée à 1 heure
📤 Slide 8 — Workflow n8n : génération du Magic Link
Nœuds recommandés :
- Webhook (appel depuis WebApp ou Odoo)
- Set (générer token avec JS random)
- Data Store (sauver token + expiration)
- Compose URL
- WhatsApp Send Message (Meta API)
- Retour : { "link": "https://webapp.com/onboarding?t=abc123" }
Bonus :
- Log des créations de tokens
- Détection tokens trop souvent demandés (anti-abus)
📥 Slide 9 — Workshop : générer ce lien
Atelier pratique :
🎯 Produire exactement ce lien :
https://webapp.com/onboarding?t=abc123
Étapes :
-
Dans n8n → nœud Function :
return { token: Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2) };
- Stocker dans Data Store avec expiration
-
Construire URL :
={{"https://webapp.com/onboarding?t=" + $json.token}} - Envoyer dans WhatsApp
- Tester manuellement dans navigateur
🧱 Slide 10 — Synthèse & Next Steps
Ce que vous savez maintenant :
- Pourquoi un magic link = UX idéale
- Comment générer un token sécurisé
- Comment encapsuler dans WhatsApp
- Comment valider le token côté Next.js
- Comment expirer les liens automatiquement
Prochain module (4.1.9) :
✨ Session Management & Scopes (“Vous êtes l’aidant de Jean Durand”)
There are no comments for now.