feat(auth): real JWT login, RBAC routes, RGPD cookie banner + users/journal admin
Build & Deploy / build (push) Successful in 11s
Build & Deploy / build (push) Successful in 11s
This commit is contained in:
@@ -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é */
|
||||
|
||||
Reference in New Issue
Block a user