enseignant ou admin. Les étudiants ne peuvent pas télécharger la liste des inscrits de l'école.app.get('/api/enseignant/etudiants', verifierToken, async (req, res) => {
// Vérification du rôle
if (req.user.role !== 'enseignant' && req.user.role !== 'admin') {
return res.status(403).json({ message: "Accès interdit" });
}
try {
// Extraction ciblée (uniquement les comptes étudiants)
const etudiants = await db.all(`
SELECT id, nom, prenom, mail, classe
FROM Comptes
WHERE role = 'etudiant'
ORDER BY nom ASC
`);
res.json(etudiants);
} catch (error) {
res.status(500).json({ message: "Erreur serveur" });
}
});
etudiants.classeGeree se met à jour..filter() de JavaScript ne conserve à l'écran que les étudiants dont la classe correspond à classeGeree. La transition est instantanée.{/* Rendu de la vue "Gestion" dans App.jsx */}
Liste des élèves inscrits en {classeGeree}
{/* Filtrage dynamique avant le mapping */}
{etudiants
.filter(e => e.classe === classeGeree)
.map(e => (
{e.nom} {e.prenom}
{e.mail}
))}
{/* Message préventif si la classe est vide */}
{etudiants.filter(e => e.classe === classeGeree).length === 0 && (
Aucun étudiant n'est inscrit dans cette classe pour le moment.
)}
PUT (utilisée pour les mises à jour partielles)./* Service de mise à jour (saeServices.js) */
updateEtudiantClasse: async (etudiantId, nouvelleClasse, token) => {
const response = await fetch(`${API_BASE_URL}/enseignant/etudiants/${etudiantId}/classe`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
// On ne met à jour que ce champ précis
body: JSON.stringify({ nouvelleClasse })
});
if (!response.ok) throw new Error("Échec de l'assignation");
return await response.json();
}