Files
front_directorio/src/components/NavUsuarios/Menu.js
T

89 lines
3.2 KiB
JavaScript
Raw Normal View History

2024-07-05 19:34:58 -06:00
import React from 'react';
2024-07-05 21:42:24 -06:00
import { PrivateRoutes, PublicRoutes } from '../../models/routes';
import { useEffect, useState } from "react";
import Guard from '../../guards/route.guard';
2024-07-05 19:34:58 -06:00
import './Menu.css';
const Menu = () => {
2024-07-05 21:42:24 -06:00
const permissions = Guard();
const [usuario,setUsuario] = useState(null)
useEffect(() => {
const jwtPermissions =() => {
const jwtToken = localStorage.getItem('Token');
if (!jwtToken) {
console.error('No se encontró el token en localStorage');
return;
}
const parts = jwtToken.split('.');
const decodedPayload = JSON.parse(atob(parts[1]));
const user = decodedPayload.usuario;
setUsuario(user);
};
jwtPermissions();
}, []);
2024-07-05 21:50:01 -06:00
const handleLogout = () => {
localStorage.removeItem('Token');
window.location.href = PublicRoutes.LOGIN;
};
2024-07-05 19:34:58 -06:00
return (
<nav className="navbar navbar-dark bg-dark fixed-top">
<div className="container-fluid">
2024-07-05 21:42:24 -06:00
<div className="d-flex ">
2024-07-05 19:34:58 -06:00
<button className="navbar-toggler me-3" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>
2024-07-05 21:42:24 -06:00
2024-07-05 19:34:58 -06:00
<div className="navbar-brand ms-auto">
2024-07-05 21:42:24 -06:00
<span>{usuario}</span> <span className="separator">- </span>
{permissions === 1 && (
<span>Administrador</span>
)}
{permissions === 2 && (
<span>Responsable</span>
)}
2024-07-05 19:34:58 -06:00
</div>
2024-07-05 21:42:24 -06:00
2024-07-05 19:34:58 -06:00
</div>
<div className="offcanvas offcanvas-end" tabIndex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
<div className="offcanvas-header">
<h5 className="offcanvas-title" id="offcanvasNavbarLabel">Menú</h5>
<button type="button" className="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div className="offcanvas-body">
<ul className="navbar-nav justify-content-end flex-grow-1 pe-3">
<li className="nav-item">
2024-07-05 21:42:24 -06:00
<a className="nav-link" onClick={() => window.location.href= PrivateRoutes.CREARPROFESOR}>Crear Profesor</a>
2024-07-05 19:34:58 -06:00
</li>
<li className="nav-item">
2024-07-05 21:42:24 -06:00
<a className="nav-link" onClick={() => window.location.href=PublicRoutes.FILTER}>Editar Profesor</a>
2024-07-05 19:34:58 -06:00
</li>
2024-07-05 21:42:24 -06:00
{permissions === 1 && (
<>
<li className="nav-item">
<a className="nav-link" onClick={() => window.location.href= PrivateRoutes.CREARUSUARIO}>Crear Usuario</a>
</li>
<li className="nav-item">
<a className="nav-link" onClick={() => window.location.href=PrivateRoutes.FILTERUSUARIO}>Editar Usuario</a>
</li>
</>
)}
2024-07-05 21:50:01 -06:00
<li className="nav-item">
<button className="nav-link btn btn-link" onClick={handleLogout}>Cerrar Sesión</button>
</li>
2024-07-05 19:34:58 -06:00
</ul>
</div>
</div>
</div>
</nav>
);
}
export default Menu;