init projet

This commit is contained in:
2026-05-20 10:43:18 +02:00
parent 51f27903bb
commit 9a402b0b34
57 changed files with 5622 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
/* Contexte d'authentification global : gestion de l'utilisateur connecté */
import { createContext, useContext, useState } from 'react';
const AuthContext = createContext(null);
/* Utilisateur fictif stocké après connexion réussie (V1, pas de vrai auth) */
const USER_FICTIF = { nom: 'Coyaud', prenom: 'Anthony', role: 'Admin' };
const STORAGE_KEY = 'ds_user';
/* Fournisseur du contexte d'authentification */
export function AuthProvider({ children }) {
const [user, setUser] = useState(() => {
/* Restauration de la session depuis sessionStorage */
const stored = sessionStorage.getItem(STORAGE_KEY);
return stored ? JSON.parse(stored) : null;
});
/* Connexion : stocke l'utilisateur fictif dans le state et sessionStorage, retourne true */
function login() {
setUser(USER_FICTIF);
sessionStorage.setItem(STORAGE_KEY, JSON.stringify(USER_FICTIF));
return true;
}
/* Déconnexion : vide le state et sessionStorage */
function logout() {
setUser(null);
sessionStorage.removeItem(STORAGE_KEY);
}
/* Booléen pratique pour savoir si l'utilisateur est connecté */
const isAuthenticated = !!user;
return (
<AuthContext.Provider value={{ user, login, logout, isAuthenticated }}>
{children}
</AuthContext.Provider>
);
}
/* Hook personnalisé pour accéder au contexte d'authentification */
export function useAuth() {
const context = useContext(AuthContext);
if (!context) {
throw new Error('useAuth doit être utilisé dans un AuthProvider');
}
return context;
}