diff --git a/app/ActivosMantenimiento/Page.module.css b/app/AT/ActivosMantenimiento/Page.module.css similarity index 100% rename from app/ActivosMantenimiento/Page.module.css rename to app/AT/ActivosMantenimiento/Page.module.css diff --git a/app/ActivosMantenimiento/page.tsx b/app/AT/ActivosMantenimiento/page.tsx similarity index 97% rename from app/ActivosMantenimiento/page.tsx rename to app/AT/ActivosMantenimiento/page.tsx index c828edc..9ba394e 100644 --- a/app/ActivosMantenimiento/page.tsx +++ b/app/AT/ActivosMantenimiento/page.tsx @@ -1,7 +1,7 @@ "use client"; +import SearchUser from "@/app/Components/SearchUser/searchUser"; +import Toggle from "@/app/Components/Toggle/Toggle"; import { useState } from "react"; -import SearchUser from "../Components/SearchUser/searchUser"; -import Toggle from "../Components/Toggle/Toggle"; export default function Page() { const [tiempo, setTiempo] = useState(""); diff --git a/app/AgregarTiempo/addTime.css b/app/AT/AgregarTiempo/addTime.css similarity index 100% rename from app/AgregarTiempo/addTime.css rename to app/AT/AgregarTiempo/addTime.css diff --git a/app/AgregarTiempo/page.tsx b/app/AT/AgregarTiempo/page.tsx similarity index 64% rename from app/AgregarTiempo/page.tsx rename to app/AT/AgregarTiempo/page.tsx index aeaa262..b59a799 100644 --- a/app/AgregarTiempo/page.tsx +++ b/app/AT/AgregarTiempo/page.tsx @@ -1,8 +1,8 @@ -import Information from "../Components/Information/information"; -import Receipt from "../Components/Receipt/Receipt"; -import SearchUser from "../Components/SearchUser/searchUser"; +import SearchUser from '@/app/Components/SearchUser/searchUser'; import './addTime.css' +import Information from '@/app/Components/Information/information'; +import Receipt from '@/app/Components/Receipt/Receipt'; export default function Page() { return ( diff --git a/app/Alta/page.tsx b/app/AT/Alta/page.tsx similarity index 96% rename from app/Alta/page.tsx rename to app/AT/Alta/page.tsx index e87c502..acf3ec2 100644 --- a/app/Alta/page.tsx +++ b/app/AT/Alta/page.tsx @@ -1,7 +1,6 @@ 'use client' import { useState } from "react"; -import "../globals.css"; -import StepNavigator from "../Components/StepNavigator/StepNavigator"; +import StepNavigator from "@/app/Components/StepNavigator/StepNavigator"; export default function Page() { const [step, setStep] = useState(1); diff --git a/app/AsignacionEquipo/asignacionEquipos..css b/app/AT/AsignacionEquipo/asignacionEquipos..css similarity index 100% rename from app/AsignacionEquipo/asignacionEquipos..css rename to app/AT/AsignacionEquipo/asignacionEquipos..css diff --git a/app/AsignacionEquipo/page.tsx b/app/AT/AsignacionEquipo/page.tsx similarity index 92% rename from app/AsignacionEquipo/page.tsx rename to app/AT/AsignacionEquipo/page.tsx index a717075..6a2008c 100644 --- a/app/AsignacionEquipo/page.tsx +++ b/app/AT/AsignacionEquipo/page.tsx @@ -1,7 +1,7 @@ "use client"; +import SearchUser from "@/app/Components/SearchUser/searchUser"; +import Toggle from "@/app/Components/Toggle/Toggle"; import { useState } from "react"; -import SearchUser from "../Components/SearchUser/searchUser"; -import Toggle from "../Components/Toggle/Toggle"; // Assuming you will create this new component export default function Page() { diff --git a/app/AsignacionMesas/asignacionmesas.css b/app/AT/AsignacionMesas/asignacionmesas.css similarity index 100% rename from app/AsignacionMesas/asignacionmesas.css rename to app/AT/AsignacionMesas/asignacionmesas.css diff --git a/app/AsignacionMesas/page.tsx b/app/AT/AsignacionMesas/page.tsx similarity index 95% rename from app/AsignacionMesas/page.tsx rename to app/AT/AsignacionMesas/page.tsx index b941e07..1315ccc 100644 --- a/app/AsignacionMesas/page.tsx +++ b/app/AT/AsignacionMesas/page.tsx @@ -1,7 +1,7 @@ "use client"; +import SearchUser from "@/app/Components/SearchUser/searchUser"; +import Toggle from "@/app/Components/Toggle/Toggle"; import { useState } from "react"; -import SearchUser from "../Components/SearchUser/searchUser"; -import Toggle from "../Components/Toggle/Toggle"; // Assuming you will create this new component export default function Page() { diff --git a/app/BitacoraSanciones/Page.module.css b/app/AT/BitacoraSanciones/Page.module.css similarity index 100% rename from app/BitacoraSanciones/Page.module.css rename to app/AT/BitacoraSanciones/Page.module.css diff --git a/app/BitacoraSanciones/page.tsx b/app/AT/BitacoraSanciones/page.tsx similarity index 96% rename from app/BitacoraSanciones/page.tsx rename to app/AT/BitacoraSanciones/page.tsx index ea1605e..bac124f 100644 --- a/app/BitacoraSanciones/page.tsx +++ b/app/AT/BitacoraSanciones/page.tsx @@ -1,11 +1,11 @@ "use client"; import { useState } from "react"; -import SearchDate from "../Components/SearchDate/SearchDate"; -import SearchUser from "../Components/SearchUser/searchUser"; -import Toggle from "../Components/Toggle/Toggle"; import styles from "./Page.module.css"; // importamos el css -import Information from "../Components/Information/information"; +import Toggle from "@/app/Components/Toggle/Toggle"; +import SearchDate from "@/app/Components/SearchDate/SearchDate"; +import Information from "@/app/Components/Information/information"; +import SearchUser from "@/app/Components/SearchUser/searchUser"; export default function Page() { const [usuario_sanciones] = useState([ @@ -163,7 +163,7 @@ export default function Page() { content: ( <>
- + diff --git a/app/CambiarPass/page.tsx b/app/AT/CambiarPass/page.tsx similarity index 57% rename from app/CambiarPass/page.tsx rename to app/AT/CambiarPass/page.tsx index 1c3915e..00fba34 100644 --- a/app/CambiarPass/page.tsx +++ b/app/AT/CambiarPass/page.tsx @@ -1,5 +1,4 @@ -import ChangePassword from "../Components/ChangePassword/changePassword"; -import SearchUser from "../Components/SearchUser/searchUser"; +import ChangePassword from "../../Components/ChangePassword/changePassword"; export default function Page() { return ( diff --git a/app/Impresiones/page.tsx b/app/AT/Impresiones/page.tsx similarity index 87% rename from app/Impresiones/page.tsx rename to app/AT/Impresiones/page.tsx index 7bab7ad..e168e19 100644 --- a/app/Impresiones/page.tsx +++ b/app/AT/Impresiones/page.tsx @@ -1,12 +1,12 @@ 'use client'; -import SearchUser from "../Components/SearchUser/searchUser"; -import Receipt from "../Components/Receipt/Receipt"; -import Impressions from "../Components/Impressions/impressions"; -import Toggle from "../Components/Toggle/Toggle"; +import SearchUser from "../../Components/SearchUser/searchUser"; +import Receipt from "../../Components/Receipt/Receipt"; +import Impressions from "../../Components/Impressions/impressions"; +import Toggle from "../../Components/Toggle/Toggle"; import "@/app/globals.css"; -import Information from "../Components/Information/information"; +import Information from "../../Components/Information/information"; export default function Page() { return ( diff --git a/app/InformacionEquipo/informacionequipo.css b/app/AT/InformacionEquipo/informacionequipo.css similarity index 100% rename from app/InformacionEquipo/informacionequipo.css rename to app/AT/InformacionEquipo/informacionequipo.css diff --git a/app/InformacionEquipo/page.tsx b/app/AT/InformacionEquipo/page.tsx similarity index 87% rename from app/InformacionEquipo/page.tsx rename to app/AT/InformacionEquipo/page.tsx index 3966d6b..a477682 100644 --- a/app/InformacionEquipo/page.tsx +++ b/app/AT/InformacionEquipo/page.tsx @@ -1,5 +1,6 @@ -import ProgramSelector from "../Components/ProgramSelector/ProgramSelector"; -import Toggle from "../Components/Toggle/Toggle"; +import ProgramSelector from "@/app/Components/ProgramSelector/ProgramSelector"; +import Toggle from "@/app/Components/Toggle/Toggle"; + import "./informacionequipo.css"; export default function Page() { @@ -41,7 +42,6 @@ export default function Page() { { key: "2", label: "Programa por equipo", - // ✅ Ahora pasamos titulo y opcion como props al componente content: ( diff --git a/app/Inscritos/page.tsx b/app/AT/Inscritos/page.tsx similarity index 94% rename from app/Inscritos/page.tsx rename to app/AT/Inscritos/page.tsx index 0d475ae..7195f72 100644 --- a/app/Inscritos/page.tsx +++ b/app/AT/Inscritos/page.tsx @@ -1,4 +1,3 @@ -import SearchUser from "../Components/SearchUser/searchUser"; export default function Page() { return ( diff --git a/app/Mensajes/mensaje.css b/app/AT/Mensajes/mensaje.css similarity index 100% rename from app/Mensajes/mensaje.css rename to app/AT/Mensajes/mensaje.css diff --git a/app/Mensajes/page.tsx b/app/AT/Mensajes/page.tsx similarity index 84% rename from app/Mensajes/page.tsx rename to app/AT/Mensajes/page.tsx index 47a9819..ed3d6b6 100644 --- a/app/Mensajes/page.tsx +++ b/app/AT/Mensajes/page.tsx @@ -1,6 +1,7 @@ "use client"; -import Toggle from "../Components/Toggle/Toggle"; -import EnviarMensaje from "../Components/EviarMensaje/EnviarMensaje"; // 👈 importa bien + +import EnviarMensaje from "@/app/Components/EviarMensaje/EnviarMensaje"; +import Toggle from "@/app/Components/Toggle/Toggle"; export default function Page() { return ( diff --git a/app/Monitor/Page.module.css b/app/AT/Monitor/Page.module.css similarity index 100% rename from app/Monitor/Page.module.css rename to app/AT/Monitor/Page.module.css diff --git a/app/Monitor/page.tsx b/app/AT/Monitor/page.tsx similarity index 100% rename from app/Monitor/page.tsx rename to app/AT/Monitor/page.tsx diff --git a/app/Programas/page.tsx b/app/AT/Programas/page.tsx similarity index 95% rename from app/Programas/page.tsx rename to app/AT/Programas/page.tsx index 6103442..b6a9f29 100644 --- a/app/Programas/page.tsx +++ b/app/AT/Programas/page.tsx @@ -1,6 +1,6 @@ "use client"; import { useState } from "react"; -import SearchUser from "../Components/SearchUser/searchUser"; +import SearchUser from "../../Components/SearchUser/searchUser"; import styleprograms from "./programas.module.css"; export default function Page() { diff --git a/app/Programas/programas.module.css b/app/AT/Programas/programas.module.css similarity index 100% rename from app/Programas/programas.module.css rename to app/AT/Programas/programas.module.css diff --git a/app/QuitarSancion/Page.module.css b/app/AT/QuitarSancion/Page.module.css similarity index 100% rename from app/QuitarSancion/Page.module.css rename to app/AT/QuitarSancion/Page.module.css diff --git a/app/QuitarSancion/page.tsx b/app/AT/QuitarSancion/page.tsx similarity index 95% rename from app/QuitarSancion/page.tsx rename to app/AT/QuitarSancion/page.tsx index bdee52c..aab0b2f 100644 --- a/app/QuitarSancion/page.tsx +++ b/app/AT/QuitarSancion/page.tsx @@ -1,7 +1,7 @@ "use client"; import { useState } from "react"; -import SearchUser from "../Components/SearchUser/searchUser"; import styles from "./Page.module.css"; // importamos el css +import SearchUser from "@/app/Components/SearchUser/searchUser"; export default function Page() { const [sanciones] = useState([ diff --git a/app/Recibo/Page.module.css b/app/AT/Recibo/Page.module.css similarity index 100% rename from app/Recibo/Page.module.css rename to app/AT/Recibo/Page.module.css diff --git a/app/Recibo/page.tsx b/app/AT/Recibo/page.tsx similarity index 95% rename from app/Recibo/page.tsx rename to app/AT/Recibo/page.tsx index b2918c5..effe827 100644 --- a/app/Recibo/page.tsx +++ b/app/AT/Recibo/page.tsx @@ -2,8 +2,9 @@ import { useState } from "react"; import styles from "./Page.module.css"; // importamos el css -import SearchDateBetween from "../Components/SearchDateBetween/SearchDateBetween"; -import Toggle from "../Components/Toggle/Toggle"; +import Toggle from "@/app/Components/Toggle/Toggle"; +import SearchDateBetween from "@/app/Components/SearchDateBetween/SearchDateBetween"; + export default function Page() { const [reportes] = useState([ { diff --git a/app/AT/layout.tsx b/app/AT/layout.tsx new file mode 100644 index 0000000..a71b9ca --- /dev/null +++ b/app/AT/layout.tsx @@ -0,0 +1,5 @@ +import { PrivateRoute } from "../Routes/PrivateRoute"; + +export default function PrivateLayout({ children }: { children: React.ReactNode }) { + return {children}; +} diff --git a/app/Components/BarNavigation/BarNavigation.tsx b/app/Components/BarNavigation/BarNavigation.tsx index 488dafa..cd45bca 100644 --- a/app/Components/BarNavigation/BarNavigation.tsx +++ b/app/Components/BarNavigation/BarNavigation.tsx @@ -26,13 +26,13 @@ function BarNavigation() {
  • toggleSubMenu(0)}>Inscripciones
      - +
    • Alta
    • - +
    • Agregar Tiempo
    • - +
    • Inscripciones
    @@ -41,16 +41,16 @@ function BarNavigation() {
  • toggleSubMenu(1)}>Servicios
      - +
    • Impresiones y Ploteo
    • - +
    • Asignacion de Mesas
    • - +
    • Asignacion de Equipos
    • - +
    • Monitor
    @@ -59,16 +59,16 @@ function BarNavigation() {
  • toggleSubMenu(2)}>Equipo
      - +
    • Informacion de Equipos
    • - +
    • Activos y en Mantenimiento
    • - +
    • Mensajes
    • - +
    • Programas
    @@ -77,24 +77,24 @@ function BarNavigation() {
  • toggleSubMenu(3)}>Reportes
      - +
    • Recibo
    • - +
    • Inscritos
    • - +
    • Bitacora y sanciones
  • - + Quitar sancion
  • - + Cambiar contraseña
  • diff --git a/app/Components/Footer/Footer.module.css b/app/Components/Footer/Footer.module.css index b9183d1..54d9bb8 100644 --- a/app/Components/Footer/Footer.module.css +++ b/app/Components/Footer/Footer.module.css @@ -6,7 +6,7 @@ width: 20%; height: 100%; min-width: 300px; - background: linear-gradient(to left, #003d79,#d59f0f); + background: linear-gradient(to left, #003d79, #d59f0f); transform: skew(45deg); z-index: 1; } @@ -19,7 +19,19 @@ width: 20%; height: 100%; min-width: 300px; - background: linear-gradient(to right, #003d79,#d59f0f); + background: linear-gradient(to right, #003d79, #d59f0f); transform: skew(-45deg); z-index: 1; } + +@media(max-width:800px) { + .yellowPart { + width: 5%; + left: -150px; + } + + .yellowPartOpuest { + width: 5%; + right: -150px; + } +} \ No newline at end of file diff --git a/app/Routes/LoginRedirect.tsx b/app/Routes/LoginRedirect.tsx new file mode 100644 index 0000000..0d179c8 --- /dev/null +++ b/app/Routes/LoginRedirect.tsx @@ -0,0 +1,21 @@ +"use client"; + +import { useAuth } from "../lib/useAuth"; +import { useRouter } from "next/navigation"; +import { useEffect } from "react"; + +export const LoginRedirect = ({ children }: { children: React.ReactNode }) => { + const { loading, authenticated } = useAuth(); + const router = useRouter(); + + useEffect(() => { + if (!loading && authenticated) { + router.push("/AT/Impresiones"); + } + }, [loading, authenticated, router]); + + if (loading) return

    Cargando...

    ; + + return !authenticated ? <>{children} : null; +}; +//IO \ No newline at end of file diff --git a/app/Routes/PrivateRoute.tsx b/app/Routes/PrivateRoute.tsx new file mode 100644 index 0000000..9e2b653 --- /dev/null +++ b/app/Routes/PrivateRoute.tsx @@ -0,0 +1,20 @@ +"use client"; + +import { useAuth } from "../lib/useAuth"; +import { useRouter } from "next/navigation"; +import { useEffect } from "react"; + +export const PrivateRoute = ({ children }: { children: React.ReactNode }) => { + const { loading, authenticated } = useAuth(); + const router = useRouter(); + + useEffect(() => { + if (!loading && !authenticated) { + router.push("/"); + } + }, [loading, authenticated, router]); + + if (loading) return

    Cargando...

    ; + + return authenticated ? <>{children} : null; +}; diff --git a/app/globals.css b/app/globals.css index 6e3aa7e..d3dde92 100644 --- a/app/globals.css +++ b/app/globals.css @@ -359,7 +359,7 @@ table tr { } .messageBox { - position: relative; + position: absolute; padding: 0.5rem 1.25rem; border-radius: 4px; font-weight: bold; @@ -367,6 +367,9 @@ table tr { text-align: center; opacity: 1; z-index: 100; + top: 0; + left: 0; + width: 100%; } .messageBox.hidden { @@ -438,6 +441,12 @@ table tr { .containerSection { align-items: center; } + + .centerGrid { + display: flex !important; + justify-content: center; + align-items: center; + } } @media (max-height: 960px) { diff --git a/app/lib/useAuth.ts b/app/lib/useAuth.ts new file mode 100644 index 0000000..ea23ebf --- /dev/null +++ b/app/lib/useAuth.ts @@ -0,0 +1,47 @@ +import { useEffect, useState } from 'react'; +import axios from 'axios'; +import { envConfig } from "./config"; + +export const useAuth = () => { + const [loading, setLoading] = useState(true); + const [authenticated, setAuthenticated] = useState(false); + + useEffect(() => { + const checkAuth = async () => { + const token = localStorage.getItem('token'); + + if (!token) { + setAuthenticated(false); + setLoading(false); + return; + } + + try { + const res = await axios.get(`${envConfig.apiUrl}/user/validate-token`, { + headers: { Authorization: `Bearer ${token}` }, + }); + + const isValid = res.data.valid; + + if (isValid) { + setAuthenticated(true); + } else { + setAuthenticated(false); + localStorage.removeItem('token'); + localStorage.removeItem('session'); + } + } catch (err) { + setAuthenticated(false); + localStorage.removeItem('token'); + localStorage.removeItem('session'); + } finally { + setLoading(false); + } + }; + + checkAuth(); + }, []); + + return { loading, authenticated }; +}; +//IO diff --git a/app/page.tsx b/app/page.tsx index 56ef55c..6b3aa1f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,8 +1,11 @@ import Login from "./Components/Login/Login"; +import { LoginRedirect } from "./Routes/LoginRedirect"; export default function Home() { return ( - + + + ); } //IO \ No newline at end of file