import React, { useState, useEffect } from 'react'; import { useStore } from '../stores/store'; import { api } from '../stores/api'; const jourLabel = (jour) => { if (!jour) return 'Jour à préciser'; return jour.charAt(0).toUpperCase() + jour.slice(1); }; export default function Login() { const { login, loading, error, groupes, loadGroupes, setPage } = useStore(); const [courriel, setCourriel] = useState(localStorage.getItem('gm_courriel') || ''); const [pin, setPin] = useState(''); const [groupeId, setGroupeId] = useState(localStorage.getItem('gm_groupe_id') || ''); const [groupeOuvert, setGroupeOuvert] = useState(''); const [seSouvenir, setSeSouvenir] = useState(!!localStorage.getItem('gm_courriel')); const [sysadminOuvert, setSysadminOuvert] = useState(false); const [sysadminPin, setSysadminPin] = useState(''); useEffect(() => { if (groupes.length === 0) loadGroupes(); }, []); useEffect(() => { if (groupes.length === 0) return; const groupeExiste = groupes.some((g) => g.id === groupeId); if (groupeId && groupeExiste) return; const prochainGroupeId = groupes.length === 1 ? groupes[0].id : ''; setGroupeId(prochainGroupeId); if (prochainGroupeId) { localStorage.setItem('gm_groupe_id', prochainGroupeId); } else { localStorage.removeItem('gm_groupe_id'); } }, [groupes, groupeId]); const ouvrirGroupe = (id) => { const prochain = groupeOuvert === id ? '' : id; setGroupeOuvert(prochain); setGroupeId(id); localStorage.setItem('gm_groupe_id', id); }; const handleSubmit = async (e) => { e.preventDefault(); if (!courriel || !pin || !groupeId) return; try { await login(courriel, pin, groupeId, seSouvenir); } catch {} }; const ouvrirSysadmin = async (e) => { e.preventDefault(); if (sysadminPin.length !== 4) return; try { const data = await api.post('/admin/sysadmin-login', { pin: sysadminPin }); api.setToken(data.access_token, false); localStorage.setItem('gm_sysadmin_instance', '1'); localStorage.removeItem('gm_groupe_id'); useStore.setState({ token: data.access_token, membre: data.membre, groupeId: null, groupe: null, postes: ['Sysadmin'], estExecutif: true, estSysadmin: true, modulesConsultation: [], modulesSaisie: [], modulesGestion: [], sysadminInstance: true, error: null, }); setPage('G14'); } catch (e) { useStore.setState({ error: e.message }); } finally { setSysadminPin(''); } }; return (
District 87-16
Lieu : {groupe.adresse_local}
)} {groupe.format_reunion && (Format : {groupe.format_reunion}
)} {groupe.district && (District : {groupe.district}
)}100% logiciel libre · Hébergé au Québec