feat(auth): real JWT login, RBAC routes, RGPD cookie banner + users/journal admin
Build & Deploy / build (push) Successful in 11s

This commit is contained in:
neckfire
2026-06-20 12:54:01 +02:00
parent 4466b38f75
commit 7a4206a522
12 changed files with 693 additions and 80 deletions
+12 -11
View File
@@ -1,32 +1,33 @@
/* Contexte d'authentification global : gestion de l'utilisateur connecté */
import { createContext, useContext, useState } from 'react';
import * as api from '../services/api';
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);
/* Restauration de la session depuis le localStorage au montage */
const stored = localStorage.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;
/* Connexion : appelle l'API, stocke le token + l'utilisateur retourné */
async function login(username, password) {
const connectedUser = await api.login(username, password);
setUser(connectedUser);
localStorage.setItem(STORAGE_KEY, JSON.stringify(connectedUser));
return connectedUser;
}
/* Déconnexion : vide le state et sessionStorage */
/* Déconnexion : vide le token, le state et le localStorage */
function logout() {
api.clearToken();
setUser(null);
sessionStorage.removeItem(STORAGE_KEY);
localStorage.removeItem(STORAGE_KEY);
}
/* Booléen pratique pour savoir si l'utilisateur est connecté */