Enregistrement du joueur
Créer un composant React pour permettre au joueur de s’enregistrer de manière sécurisée avant de commencer le quiz

Objectifs de la séance
- Comprendre ce qu’est un composant React
- Mettre en place une authentification sécurisée avec Supabase
- Utiliser un trigger pour lier un utilisateur authentifié à un joueur
- Créer des politiques RLS (Row Level Security) pour protéger les données
- Créer un formulaire d’enregistrement pour demander le pseudo du joueur
- Préparer le terrain pour enregistrer son score plus tard
Notions théoriques
Qu’est-ce qu’un composant React ?

Un composant est un bloc de code réutilisable.
Un composant peut contenir :
- du HTML (rendu à l’écran)
- du JavaScript (logique de l’interface)
- des états (
useState) pour gérer les données internes - des props (paramètres) pour personnaliser son comportement
Pourquoi créer des composants ?
- Pour organiser le code en petites parties lisibles
- Pour réutiliser des éléments (ex. : une carte, un bouton, un formulaire)
- Pour séparer les responsabilités : chaque composant a un rôle précis
Exemple simple de composant
// app/components/Bonjour.tsx
export default function Bonjour() {
return <p>Bonjour !</p>;
}
Et dans app/page.tsx :
import Bonjour from "./components/Bonjour";
export default function Home() {
return (
<div>
<Bonjour />
</div>
);
}
Composant avec état (useState)
"use client";
import { useState } from "react";
export default function Compteur() {
const [nombre, setNombre] = useState(0);
return (
<div>
<p>Vous avez cliqué {nombre} fois</p>
<button onClick={() => setNombre(nombre + 1)}>Cliquez ici</button>
</div>
);
}
Où créer les composants ?
Dans un projet Next.js, vous pouvez créer un dossier pour vos composants :
/app/components/
Chaque composant est un fichier .tsx (TypeScript + JSX).
info
- Le TypeScript est une extension de JavaScript qui ajoute la gestion des types.
- JSX est une syntaxe qui permet de mélanger du JavaScript et du HTML.
Étapes pour enregistrer un joueur de manière sécurisée
- Utiliser l'authentification anonyme de Supabase pour créer un utilisateur sécurisé.
- Créer un trigger qui se déclenche à la création de l'utilisateur pour l'insérer automatiquement dans la table
joueur. - Créer une politique RLS pour que chaque utilisateur ne puisse voir et modifier que ses propres données.
- Créer un composant
FormulaireJoueurqui appellesignInAnonymously. - Stocker l'ID de l'utilisateur Supabase dans le
localStorage. - Utiliser cet ID pour lier les futures actions (comme le score) au joueur.
Table joueur dans Supabase
La table joueur doit être modifiée pour être liée à la table auth.users de Supabase.
CREATE TABLE public.joueur (
id bigint GENERATED ALWAYS AS IDENTITY NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT now(),
pseudo character varying NOT NULL,
email character varying,
date_inscription date NOT NULL,
user_id uuid REFERENCES auth.users(id) ON DELETE CASCADE,
CONSTRAINT joueur_pkey PRIMARY KEY (id),
CONSTRAINT joueur_user_id_unique UNIQUE (user_id)
);
Nous utiliserons le champ pseudo pour stocker le nom du joueur et le champ user_id pour le lier de manière sécurisée à un compte Supabase.
Sécurité : Authentification et RLS
1. Activer l'authentification anonyme
Dans la console Supabase, allez dans Authentication > Settings et activez Enable anonymous sign-in.