From f60377ebafee04d99a7229a41e13b8e9486ab17e Mon Sep 17 00:00:00 2001 From: Sergio Brenes Date: Tue, 18 Mar 2025 18:13:50 +0000 Subject: [PATCH] Pruebas --- .../{dda1fcda5948_.py => e4e73f1eaf2a_.py} | 7 ++- src/front/js/store/flux.js | 51 +++++++++++++++---- 2 files changed, 44 insertions(+), 14 deletions(-) rename migrations/versions/{dda1fcda5948_.py => e4e73f1eaf2a_.py} (95%) diff --git a/migrations/versions/dda1fcda5948_.py b/migrations/versions/e4e73f1eaf2a_.py similarity index 95% rename from migrations/versions/dda1fcda5948_.py rename to migrations/versions/e4e73f1eaf2a_.py index b93ea547ca..8b09d83924 100644 --- a/migrations/versions/dda1fcda5948_.py +++ b/migrations/versions/e4e73f1eaf2a_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: dda1fcda5948 +Revision ID: e4e73f1eaf2a Revises: -Create Date: 2025-03-18 16:04:42.679001 +Create Date: 2025-03-18 18:11:37.058432 """ from alembic import op @@ -10,7 +10,7 @@ # revision identifiers, used by Alembic. -revision = 'dda1fcda5948' +revision = 'e4e73f1eaf2a' down_revision = None branch_labels = None depends_on = None @@ -57,7 +57,6 @@ def upgrade(): sa.Column('name', sa.String(length=80), nullable=False), sa.Column('email', sa.String(length=120), nullable=False), sa.Column('password', sa.String(length=80), nullable=False), - sa.Column('is_temporary_password', sa.Boolean(), nullable=True), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('email') ) diff --git a/src/front/js/store/flux.js b/src/front/js/store/flux.js index 4d65162df0..686fa66833 100755 --- a/src/front/js/store/flux.js +++ b/src/front/js/store/flux.js @@ -98,35 +98,66 @@ const getState = ({ getStore, getActions, setStore }) => { try { const token = localStorage.getItem("token"); if (!token) throw new Error("No token found"); - + const resp = await fetch(`${process.env.BACKEND_URL}/api/user`, { headers: { "Authorization": `Bearer ${token}` } }); - - if (!resp.ok) throw new Error("Error al obtener el usuario"); - + + if (!resp.ok) { + throw new Error("Error al obtener el usuario"); + } + const data = await resp.json(); setStore({ user: data }); + + // Obtener las mascotas del usuario + getActions().getPets(data.id); + } catch (error) { - console.log("Error al obtener usuario", error); + console.error("Error al obtener usuario:", error); + getActions().logout(); // 🔹 Si hay un error, cerrar sesión automáticamente } }, + logout: () => { localStorage.removeItem("token"); - localStorage.removeItem("user"); // 🔹 Eliminar usuario de localStorage + localStorage.removeItem("user"); setStore({ token: null, user: null, pets: [] }); + window.location.href = "/"; // 🔹 Redirigir al home al cerrar sesión }, + - loadUserFromStorage: () => { - const token = localStorage.getItem("token"); //Cargar usuario + loadUserFromStorage: async () => { + const token = localStorage.getItem("token"); const user = localStorage.getItem("user"); - + if (token && user) { - setStore({ token, user: JSON.parse(user) }); + // Verificar si el token sigue siendo válido + try { + const resp = await fetch(`${process.env.BACKEND_URL}/api/validate-token`, { + method: "POST", + headers: { + "Authorization": `Bearer ${token}` + } + }); + + if (!resp.ok) { + throw new Error("Token inválido o expirado"); + } + + setStore({ token, user: JSON.parse(user) }); + + // Una vez validado, obtener el usuario + getActions().getUser(); + } catch (error) { + console.error("Error validando el token:", error); + getActions().logout(); // Si el token no es válido, cerrar sesión + } } }, + //TRAER ALIMENTO POR GRUPOS getDogFood: async () => { const myHeaders = new Headers();