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;
|