-
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”)
لا توجد تعليقات حالياً.
مشاركة هذه المحتوى
مشاركة الرابط
المشاركة على مواقع التواصل الاجتماعي
المشاركة عن طريق البريد الإلكتروني
رجاءً تسجيل الدخول لمشاركة هذا مقال عن طريق البريد الإلكتروني.