mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-04-03 16:51:26 +00:00
feat: Securisation du Backend
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
'use client';
|
||||
import React, { createContext, useContext, useState, useEffect } from 'react';
|
||||
import { flushSync } from 'react-dom';
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
const EstablishmentContext = createContext();
|
||||
@ -46,10 +48,11 @@ export const EstablishmentProvider = ({ children }) => {
|
||||
const storedUser = sessionStorage.getItem('user');
|
||||
return storedUser ? JSON.parse(storedUser) : null;
|
||||
});
|
||||
const [selectedEstablishmentLogo, setSelectedEstablishmentLogoState] = useState(() => {
|
||||
const storedLogo = sessionStorage.getItem('selectedEstablishmentLogo');
|
||||
return storedLogo ? JSON.parse(storedLogo) : null;
|
||||
});
|
||||
const [selectedEstablishmentLogo, setSelectedEstablishmentLogoState] =
|
||||
useState(() => {
|
||||
const storedLogo = sessionStorage.getItem('selectedEstablishmentLogo');
|
||||
return storedLogo ? JSON.parse(storedLogo) : null;
|
||||
});
|
||||
|
||||
// Sauvegarder dans sessionStorage à chaque mise à jour
|
||||
const setSelectedEstablishmentId = (id) => {
|
||||
@ -106,8 +109,6 @@ export const EstablishmentProvider = ({ children }) => {
|
||||
}
|
||||
const user = session.user;
|
||||
logger.debug('User Session:', user);
|
||||
setUser(user);
|
||||
logger.debug('Establishments User= ', user);
|
||||
const userEstablishments = user.roles.map((role, i) => ({
|
||||
id: role.establishment__id,
|
||||
name: role.establishment__name,
|
||||
@ -117,27 +118,37 @@ export const EstablishmentProvider = ({ children }) => {
|
||||
role_id: i,
|
||||
role_type: role.role_type,
|
||||
}));
|
||||
setEstablishments(userEstablishments);
|
||||
logger.debug('Establishments', user.roleIndexLoginDefault);
|
||||
let roleIndexDefault = 0;
|
||||
if (user.roles && user.roles.length > 0) {
|
||||
let roleIndexDefault = 0;
|
||||
if (userEstablishments.length > user.roleIndexLoginDefault) {
|
||||
roleIndexDefault = user.roleIndexLoginDefault;
|
||||
}
|
||||
setSelectedRoleId(roleIndexDefault);
|
||||
if (userEstablishments.length > 0) {
|
||||
setSelectedEstablishmentId(userEstablishments[roleIndexDefault].id);
|
||||
setSelectedEstablishmentEvaluationFrequency(
|
||||
userEstablishments[roleIndexDefault].evaluation_frequency
|
||||
);
|
||||
setSelectedEstablishmentTotalCapacity(
|
||||
userEstablishments[roleIndexDefault].total_capacity
|
||||
);
|
||||
setSelectedEstablishmentLogo(
|
||||
userEstablishments[roleIndexDefault].logo
|
||||
);
|
||||
setProfileRole(userEstablishments[roleIndexDefault].role_type);
|
||||
}
|
||||
// flushSync force React à commiter tous les setState de manière synchrone
|
||||
// avant que endInitFunctionHandler (router.push) soit appelé.
|
||||
// Sans ça, ProtectedRoute verrait user=null au premier rendu post-navigation.
|
||||
flushSync(() => {
|
||||
setUser(user);
|
||||
setEstablishments(userEstablishments);
|
||||
if (user.roles && user.roles.length > 0) {
|
||||
setSelectedRoleId(roleIndexDefault);
|
||||
if (userEstablishments.length > 0) {
|
||||
setSelectedEstablishmentId(userEstablishments[roleIndexDefault].id);
|
||||
setSelectedEstablishmentEvaluationFrequency(
|
||||
userEstablishments[roleIndexDefault].evaluation_frequency
|
||||
);
|
||||
setSelectedEstablishmentTotalCapacity(
|
||||
userEstablishments[roleIndexDefault].total_capacity
|
||||
);
|
||||
setSelectedEstablishmentLogo(
|
||||
userEstablishments[roleIndexDefault].logo
|
||||
);
|
||||
setProfileRole(userEstablishments[roleIndexDefault].role_type);
|
||||
}
|
||||
}
|
||||
});
|
||||
logger.debug('Establishments', user.roleIndexLoginDefault);
|
||||
if (user.roles && user.roles.length > 0) {
|
||||
if (endInitFunctionHandler) {
|
||||
const role = session.user.roles[roleIndexDefault].role_type;
|
||||
endInitFunctionHandler(role);
|
||||
|
||||
Reference in New Issue
Block a user