fix: Correction du Establishment context au refresh

This commit is contained in:
Luc SORIGNET
2025-05-01 12:19:07 +02:00
parent 31fdc612b1
commit 43e301ed64
9 changed files with 136 additions and 86 deletions

View File

@ -40,14 +40,8 @@ import { useEstablishment } from '@/context/EstablishmentContext';
export default function Layout({ children }) {
const t = useTranslations('sidebar');
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
const {
setSelectedRoleId,
setSelectedEstablishmentId,
profileRole,
setProfileRole,
establishments,
user,
} = useEstablishment();
const { profileRole, establishments, user, clearContext } =
useEstablishment();
// Déplacer le reste du code ici...
const sidebarItems = {
@ -112,6 +106,7 @@ export default function Layout({ children }) {
const confirmDisconnect = () => {
setIsPopupVisible(false);
disconnect();
clearContext();
};
const dropdownItems = [
@ -161,18 +156,6 @@ export default function Layout({ children }) {
currentPage={currentPage}
items={Object.values(sidebarItems)}
onCloseMobile={toggleSidebar}
onRoleChange={(roleId) => {
let parsedRoleId = parseInt(roleId, 10);
if (parsedRoleId === -1) {
parsedRoleId = 0;
}
const role = user.roles[parsedRoleId].role_type;
const establishmentId =
user.roles[parsedRoleId].establishment__id;
setProfileRole(role);
setSelectedRoleId(parsedRoleId);
setSelectedEstablishmentId(establishmentId);
}}
/>
</div>

View File

@ -25,9 +25,8 @@ import Footer from '@/components/Footer';
export default function Layout({ children }) {
const router = useRouter(); // Définition de router
const [messages, setMessages] = useState([]);
const [isLoading, setIsLoading] = useState(true);
const [isPopupVisible, setIsPopupVisible] = useState(false);
const { profileRole, user } = useEstablishment();
const { profileRole, user, clearContext } = useEstablishment();
const softwareName = 'N3WT School';
const softwareVersion = `${process.env.NEXT_PUBLIC_APP_VERSION}`;
@ -38,6 +37,7 @@ export default function Layout({ children }) {
const confirmDisconnect = () => {
setIsPopupVisible(false);
disconnect();
clearContext();
};
const dropdownItems = [

View File

@ -19,7 +19,7 @@ export default function Page() {
const [errorMessage, setErrorMessage] = useState('');
const [userFieldError, setUserFieldError] = useState('');
const [passwordFieldError, setPasswordFieldError] = useState('');
const { setUser } = useEstablishment();
const { initializeContextWithSession } = useEstablishment();
const [isLoading, setIsLoading] = useState(false);
const router = useRouter();
@ -40,35 +40,18 @@ export default function Page() {
setErrorMessage(result.error);
setIsLoading(false);
} else {
// On initialise le contexte establishement avec la session
getSession()
.then((session) => {
if (!session || !session.user) {
throw new Error('Session not found');
}
const user = session.user;
logger.debug('User Session:', user);
setUser(session.user);
if (session.user.roles && session.user.roles.length > 0) {
let roleIndex = 0;
if (
session.user.roles.length > session.user.roleIndexLoginDefault
) {
roleIndex = session.user.roleIndexLoginDefault;
}
const role = session.user.roles[roleIndex].role_type;
initializeContextWithSession(session, (role) => {
const url = getRedirectUrlFromRole(role);
if (url) {
router.push(url);
} else {
setIsLoading(false);
setErrorMessage('Type de rôle non géré');
}
} else {
setIsLoading(false);
setErrorMessage(
'Aucun rôle trouvé pour le profil sélectionné.'
);
}
});
setIsLoading(false);
})
.catch((error) => {
logger.error(