layouts/LayoutAuth.jsx

  1. /**
  2. * @module Layouts
  3. * @category Structure
  4. */
  5. import React, { useEffect } from "react";
  6. import Header from "../components/Header";
  7. import Footer from "../components/Footer";
  8. import { Outlet, useNavigate } from "react-router-dom";
  9. import { UserProvider } from "../context/UserContext";
  10. /**
  11. * @layout
  12. * Componente de diseño para páginas de autenticación.
  13. * Redirige a los usuarios autenticados y proporciona un diseño común para las páginas de autenticación.
  14. *
  15. * @param {Object} props - Propiedades del componente.
  16. * @param {React.ReactNode} [props.children] - Componentes hijos opcionales para renderizar dentro del diseño.
  17. * @returns {JSX.Element} Componente LayoutAuth.
  18. */
  19. const LayoutAuth = ({ children }) => {
  20. const token = localStorage.getItem("token");
  21. const navigate = useNavigate();
  22. /**
  23. * Efecto para redirigir a usuarios autenticados.
  24. * Si existe un token en localStorage, redirige al usuario a la página anterior.
  25. */
  26. useEffect(() => {
  27. if (token !== null) {
  28. navigate(-1);
  29. }
  30. }, []);
  31. return (
  32. <>
  33. <UserProvider>
  34. <Header />
  35. <main>
  36. {children ? children : <Outlet />}
  37. </main>
  38. <Footer />
  39. </UserProvider>
  40. </>
  41. );
  42. };
  43. export default LayoutAuth;