mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
fix: correction des redirections vers la login page
This commit is contained in:
@ -4,24 +4,26 @@ import DropdownMenu from '@/components/DropdownMenu';
|
||||
import { getRightStr } from '@/utils/rights';
|
||||
import { ChevronDown } from 'lucide-react'; // Import de l'icône
|
||||
|
||||
const ProfileSelector = ({ onEstablishmentChange, className = '' }) => {
|
||||
const ProfileSelector = ({ onRoleChange, className = '' }) => {
|
||||
const {
|
||||
establishments,
|
||||
selectedEstablishmentId,
|
||||
selectedRoleId,
|
||||
setSelectedRoleId,
|
||||
setSelectedEstablishmentId,
|
||||
setProfileRole,
|
||||
user,
|
||||
} = useEstablishment();
|
||||
const [dropdownOpen, setDropdownOpen] = useState(false);
|
||||
|
||||
const handleEstablishmentChange = (establishmentId) => {
|
||||
setSelectedEstablishmentId(establishmentId);
|
||||
const role = establishments.find(
|
||||
(est) => est.id === establishmentId
|
||||
)?.role_type;
|
||||
const handleRoleChange = (roleId) => {
|
||||
// Pas bon quand on a plusieur role pour le même établissement
|
||||
setSelectedRoleId(roleId);
|
||||
const role = user.roles[roleId].role_type;
|
||||
setProfileRole(role);
|
||||
|
||||
if (onEstablishmentChange) {
|
||||
onEstablishmentChange(establishmentId);
|
||||
const establishmentId = user.roles[roleId].establishment__id;
|
||||
setSelectedEstablishmentId(establishmentId);
|
||||
if (onRoleChange) {
|
||||
onRoleChange(roleId);
|
||||
}
|
||||
setDropdownOpen(false); // Fermer le menu après sélection
|
||||
};
|
||||
@ -36,7 +38,7 @@ const ProfileSelector = ({ onEstablishmentChange, className = '' }) => {
|
||||
}
|
||||
|
||||
const selectedEstablishment = establishments.find(
|
||||
(est) => est.id === selectedEstablishmentId
|
||||
(est) => est.role_id === selectedRoleId
|
||||
);
|
||||
|
||||
return (
|
||||
@ -70,7 +72,7 @@ const ProfileSelector = ({ onEstablishmentChange, className = '' }) => {
|
||||
<div className="text-sm text-gray-500">{establishment.name}</div>
|
||||
</div>
|
||||
),
|
||||
onClick: () => handleEstablishmentChange(establishment.id),
|
||||
onClick: () => handleRoleChange(establishment.role_id),
|
||||
}))}
|
||||
buttonClassName="w-full"
|
||||
menuClassName="absolute mt-2 w-full bg-white border border-gray-200 rounded shadow-lg z-10"
|
||||
|
||||
@ -17,7 +17,7 @@ const SidebarItem = ({ icon: Icon, text, active, url, onClick }) => (
|
||||
</div>
|
||||
);
|
||||
|
||||
function Sidebar({ currentPage, items, onCloseMobile, onEstablishmentChange }) {
|
||||
function Sidebar({ currentPage, items, onCloseMobile, onRoleChange }) {
|
||||
const router = useRouter();
|
||||
|
||||
const [selectedItem, setSelectedItem] = useState(currentPage);
|
||||
@ -37,10 +37,7 @@ function Sidebar({ currentPage, items, onCloseMobile, onEstablishmentChange }) {
|
||||
return (
|
||||
<div className="w-64 bg-white border-r h-full border-gray-200">
|
||||
<div className="border-b border-gray-200 ">
|
||||
<ProfileSelector
|
||||
onEstablishmentChange={onEstablishmentChange}
|
||||
className="border-none"
|
||||
/>
|
||||
<ProfileSelector onRoleChange={onRoleChange} className="border-none" />
|
||||
</div>
|
||||
<nav className="space-y-1 px-4 py-6">
|
||||
{items.map((item) => (
|
||||
|
||||
Reference in New Issue
Block a user