Vibe Coding — ton premier app sans savoir coder — 6. Comptes utilisateurs & connexion

20 min read min de lecture
Chapitre 06

Comptes utilisateurs & connexion

Chapitre 6 sur 10 · 60%

Objectifs de ce chapitre

  • Comprendre quand un compte utilisateur devient vraiment nécessaire
  • Choisir une méthode de connexion adaptée à tes utilisateurs
  • Intégrer l’authentification via un service prêt à l’emploi, sans coder

Le message qui change tout

Une semaine après la mise en ligne, Tom reçoit le retour qui revient le plus souvent. Lina, une élève de 5e, lui écrit : « Monsieur, j'ai coché toutes mes habitudes sur l'ordi du CDI, et le soir sur mon téléphone, tout avait disparu ! » Tom comprend immédiatement : il avait choisi le stockage local au chapitre 3, et localStorage garde les données dans le navigateur de chaque appareil. L'ordinateur du CDI et le téléphone de Lina sont deux mondes séparés qui ne se parlent pas. Pour que l'app suive Lina partout, elle doit pouvoir la reconnaître — et reconnaître quelqu'un, sur le web, ça s'appelle un compte utilisateur.

Souviens-toi : au chapitre 3, « compte utilisateur » figurait dans la liste des mots pièges à bannir de ta v1. Ce n'était pas une interdiction définitive, c'était une question de timing. Tom a d'abord construit, déployé, et recueilli des retours réels. Maintenant, le besoin n'est plus une hypothèse : c'est la demande numéro un de ses utilisateurs. C'est exactement le bon ordre — la complexité se justifie par un besoin prouvé, jamais par un « au cas où ». Tu vas voir que cette complexité, bien abordée, est tout à fait à ta portée.

Authentification : ce qui se passe vraiment

Trois mots de vocabulaire vont transformer tes dialogues avec l'IA sur ce sujet. L'authentification, c'est prouver qui tu es (« je suis bien lina@college.fr »). La session, c'est rester reconnu pendant un moment sans devoir le prouver à chaque clic — c'est elle qui fait que tu n'as pas à te reconnecter toutes les trente secondes. L'autorisation, c'est ce que tu as le droit de voir ou de faire une fois reconnu (« Lina voit SES habitudes, pas celles des autres »). Quand tu utiliseras ces mots dans tes prompts, l'IA saura exactement de quoi tu parles.

Derrière un simple écran de connexion se cache en réalité tout un système : l'inscription, la connexion, la déconnexion, la récupération en cas d'oubli, la protection contre les robots, le stockage sécurisé des identifiants… Construire tout ça soi-même est long, et surtout dangereux : la moindre erreur expose les données de tes utilisateurs. La bonne nouvelle, c'est que personne ne le construit soi-même aujourd'hui — pas même les professionnels. Tout le monde s'appuie sur des services spécialisés qui ont résolu le problème une fois pour toutes.

Si l'IA te propose un jour de « créer un système de connexion maison » avec une table de mots de passe, refuse poliment et demande explicitement un service d'authentification reconnu. Stocker des mots de passe soi-même est l'erreur de sécurité numéro un des débutants — et elle est entièrement évitable.

Les services d’authentification prêts à l’emploi

Ces services s'appellent parfois des BaaS (Backend as a Service) : ils fournissent à ton app les briques serveur dont elle a besoin — dont l'authentification — sans que tu aies à gérer un serveur. Tu crées un compte chez eux, tu récupères deux clés, et ton app leur délègue tout le travail sensible. Trois noms reviennent partout, et l'IA les connaît par cœur :

Supabaseopen source, généreux en gratuit, et il combine authentification ET base de données — pratique pour le chapitre suivant. Le choix de Tom.
Firebasele service de Google, très répandu et très documenté. Excellent aussi, avec un écosystème un peu plus orienté Google.
Clerkspécialisé à 100 % dans l'authentification, avec des écrans de connexion tout faits et très soignés. Idéal si tu veux le plus joli résultat le plus vite.

Pour ce cours, on suivra Tom sur Supabase : son offre gratuite couvre largement une app de classe, et le fait d'avoir l'authentification et la base de données au même endroit simplifiera le chapitre 7. Mais retiens le principe plus que le nom — la méthode que tu vas apprendre s'applique à l'identique chez les concurrents.

Quelle méthode de connexion pour tes utilisateurs ?

Il existe trois grandes façons de se connecter, et le bon choix dépend entièrement de qui sont tes utilisateurs. Le mot de passe classique est universel mais pénible : les gens l'oublient, le réutilisent partout, et il faut gérer la récupération. La connexion via Google ou Apple (« OAuth ») est confortable… à condition que tes utilisateurs aient un compte Google qu'ils utilisent vraiment. Le lien magique (magic link) supprime carrément le mot de passe : l'utilisateur entre son e-mail, reçoit un lien, clique, et le voilà connecté.

  • Mot de passe : universel, mais oublis fréquents et gestion de récupération obligatoire.
  • Connexion Google / Apple : un clic et c'est fait — si tes utilisateurs ont (et utilisent) ces comptes.
  • Lien magique : rien à retenir, rien à oublier. Parfait pour des utilisateurs occasionnels ou jeunes. Seule exigence : accéder à sa boîte mail.

Tom choisit le lien magique : ses élèves ont tous une adresse fournie par le collège, et « mot de passe oublié » serait devenu sa deuxième vie. Pose-toi la même question pour ta propre app : quelle méthode crée le moins de friction pour TES utilisateurs ? Il n'y a pas de bonne réponse universelle, seulement une bonne réponse pour ton public.

sequenceDiagram
  participant E as Élève
  participant A as App de Tom
  participant S as Service Supabase
  E->>A: Saisit son adresse e-mail
  A->>S: Demande un lien magique
  S-->>E: Envoie l'e-mail avec le lien
  E->>A: Clique sur le lien reçu
  A-->>E: Session ouverte et habitudes affichées
Le flux du lien magique : pas de mot de passe, juste un e-mail et un clic.

Intégrer l’authentification avec l’IA

La démarche tient en trois temps : créer ton projet sur Supabase (un compte, un clic « New project »), récupérer tes deux clés d'accès, puis demander à l'IA de brancher tout ça. Comme pour le déploiement au chapitre 5, tu n'as pas à mémoriser la procédure — tu demandes un guidage pas à pas adapté à ton niveau. Voici le prompt complet de Tom :

PROMPT
Je veux ajouter des comptes utilisateurs à mon app de suivi d'habitudes.
Contexte : app HTML/CSS/JS déployée sur Vercel, données en localStorage pour l'instant.
Utilise Supabase Auth avec connexion par lien magique, sans mot de passe.
Ce que je veux :
1. un écran de connexion simple : champ e-mail + bouton « recevoir mon lien »
2. après clic sur le lien reçu par e-mail, l'utilisateur revient sur l'app, connecté
3. un bouton « se déconnecter » discret en haut de page
4. si l'utilisateur n'est pas connecté, il voit l'écran de connexion ; sinon, ses habitudes
IMPORTANT : ne touche pas encore aux données — on garde localStorage pour l'instant.
Guide-moi d'abord pour créer le projet Supabase et trouver mes deux clés, étape par étape, avant d'écrire le moindre code.

La ligne « ne touche pas encore aux données » est stratégique. Ajouter l'authentification ET migrer les données en même temps, c'est deux gros changements d'un coup — exactement ce que le chapitre 4 t'a appris à éviter. Ce chapitre branche la reconnaissance des utilisateurs ; le chapitre 7 s'occupera de leurs données. Une marche à la fois, même quand l'escalier est grand.

Les clés d’API : tes premiers secrets

En créant ton projet Supabase, tu vas rencontrer deux clés. La clé publique (dite « anon ») identifie ton app : elle peut vivre dans le code du navigateur, c'est prévu pour. La clé secrète (dite « service_role ») donne TOUS les droits sur ton projet : elle ne doit jamais, jamais apparaître dans du code visible par un navigateur. Ces secrets se rangent dans un fichier spécial, le .env, que Git ignore :

bash
# Fichier .env — reste sur ta machine, jamais publié
SUPABASE_URL=https://tonprojet.supabase.co
SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIs...   # publique : OK côté navigateur
SUPABASE_SERVICE_ROLE_KEY=eyJzZXJ2aWNl...   # SECRÈTE : jamais côté navigateur
Dans le doute, pose la question telle quelle à l'IA : « cette clé peut-elle apparaître dans le code du navigateur, oui ou non ? ». C'est une question binaire, elle répondra sans ambiguïté. On reparlera des secrets en profondeur au chapitre 9 — pour l'instant, retiens : la clé service_role ne sort jamais du serveur.

Tester le flux comme un utilisateur

L'authentification se teste de bout en bout, sans raccourci : entre une vraie adresse, va chercher l'e-mail (regarde aussi dans les spams, c'est le blocage classique), clique sur le lien, vérifie que tu arrives connecté. Puis déconnecte-toi et recommence. Enfin, le test décisif : ouvre l'app dans deux navigateurs différents avec deux adresses différentes, et vérifie que chacun a sa propre session. Si quelque chose coince, applique la méthode du chapitre 4 — rapport de bug en quatre points. Voici la version adaptée à l'authentification :

PROMPT
Bug de connexion à corriger.
Ce que je fais : j'entre mon adresse, je reçois l'e-mail du lien magique, je clique sur le lien.
Ce que j'attendais : revenir sur l'app, connecté.
Ce qui se passe : je reviens sur l'app mais je vois encore l'écran de connexion.
Erreur dans la console : [colle ici la ligne rouge exacte, s'il y en a une]
Vérifie en priorité la configuration des URL de redirection dans Supabase — l'URL de mon site déployé est https://mon-app.vercel.app — et dis-moi quoi corriger, étape par étape.

Ce prompt montre un réflexe de niveau supérieur : Tom oriente le diagnostic (« vérifie en priorité les URL de redirection ») parce que c'est LA cause classique de ce symptôme — le service renvoie l'utilisateur vers une adresse qui ne correspond pas au site déployé. Tu n'es pas obligé de connaître ces causes classiques : demande à l'IA « quelles sont les trois causes les plus fréquentes de ce problème ? » et elle te les listera.

Les adresses e-mail de tes utilisateurs sont des données personnelles — d'autant plus sensibles que les élèves de Tom sont mineurs. Règle d'or : ne collecte que le strict nécessaire (ici, l'e-mail et rien d'autre), et si ton app est utilisée dans un cadre scolaire, parles-en à ton établissement. La sobriété en données est à la fois une obligation et une protection.

Ce qui t’attend au prochain chapitre

À la fin de cette étape, l'app de Tom reconnaît chaque élève… mais leurs habitudes vivent encore dans le localStorage de chaque appareil. Lina peut se connecter au CDI et sur son téléphone, mais elle n'y voit pas encore les mêmes données. Il manque la seconde moitié de la solution : une base de données en ligne, où les habitudes de chaque compte seront stockées une bonne fois pour toutes, accessibles depuis n'importe où. C'est tout le programme du chapitre 7 — et tu as déjà posé la fondation idéale pour l'accueillir.

🛠️ À toi de jouer

Contexte

Tom bloque une soirée pour ajouter la connexion par lien magique à son app. Son objectif est volontairement limité : à la fin de la session, un élève doit pouvoir se connecter et se déconnecter — sans toucher aux données, qui restent en localStorage. Fais exactement le même chantier sur ton app : c'est la première brique « sérieuse » de ton parcours, et tu vas voir qu'elle est plus accessible qu'elle n'en a l'air.

Consignes

  1. Crée un compte Supabase (ou Firebase/Clerk) et un nouveau projet, puis repère tes deux clés.
  2. Choisis ta méthode de connexion selon TES utilisateurs : lien magique, mot de passe ou Google.
  3. Envoie à l’IA le prompt d’intégration en précisant bien « ne touche pas encore aux données ».
  4. Teste le flux complet : inscription, e-mail reçu (vérifie les spams), connexion, déconnexion, reconnexion.
  5. Ouvre l’app dans deux navigateurs avec deux adresses différentes et vérifie que les sessions sont bien séparées.
  6. Quand tout marche, fais un commit (ou un point de restauration) : « authentification fonctionnelle ».
Indice — Si le lien magique te ramène sur l'écran de connexion au lieu de te connecter, c'est presque toujours un problème d'URL de redirection dans la configuration Supabase : l'URL de ton site déployé doit y figurer exactement. Donne cette piste à l'IA en premier.

En résumé

  • localStorage = des données par appareil ; pour suivre un utilisateur partout, il faut un compte.
  • La complexité d’un compte se justifie par un besoin utilisateur prouvé — jamais par un « au cas où ».
  • Authentification = prouver qui tu es ; session = rester reconnu ; autorisation = ce que tu as le droit de voir.
  • On ne construit jamais son système de mots de passe soi-même : Supabase, Firebase ou Clerk s’en chargent.
  • Le lien magique supprime les mots de passe : idéal pour des utilisateurs jeunes ou occasionnels.
  • Clé publique « anon » : OK côté navigateur ; clé « service_role » : jamais — elle vit dans le .env.
  • Sépare les chantiers : ce chapitre branche l’authentification, le suivant migrera les données.

Quiz — vérifie ta compréhension

1. Pourquoi les données de Lina disparaissent-elles d’un appareil à l’autre ?

localStorage est local par définition : chaque navigateur a sa propre copie, et rien ne circule entre les appareils. C'est tout le problème que les comptes + base de données vont résoudre.

2. Quelle est la différence entre authentification et autorisation ?

D'abord on te reconnaît (authentification), ensuite on applique tes droits (autorisation) : Lina voit ses habitudes, pas celles des autres.

3. L’IA te propose de créer une table de mots de passe maison. Que fais-tu ?

Stocker des mots de passe soi-même est l'erreur de sécurité classique du débutant. Les services spécialisés ont résolu ce problème de façon sûre — délègue-leur ce travail sensible.

4. Pourquoi Tom choisit-il le lien magique pour ses élèves ?

La bonne méthode de connexion est celle qui crée le moins de friction pour TES utilisateurs. Pour des collégiens équipés d'un e-mail scolaire, zéro mot de passe = zéro « mot de passe oublié ».

5. Laquelle de ces clés ne doit JAMAIS apparaître dans le code du navigateur ?

La clé service_role donne tous les droits sur ton projet. Elle vit dans le .env, côté serveur uniquement. La clé anon, elle, est conçue pour être visible côté navigateur.

Auteur(s)

R

REHOUMA Haythem

Haythem Rehouma est un ingénieur et architecte IA et cloud, formateur et enseignant technique, avec un profil orienté IA médicale, AWS, MLOps, LLM/RAG et vision par ordinateur.