Skip to content

Commit

Permalink
correccion de inicio de sesion
Browse files Browse the repository at this point in the history
  • Loading branch information
arelydtr committed Jul 20, 2024
1 parent de6ab06 commit 800bfdc
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 40 deletions.
102 changes: 62 additions & 40 deletions src/componentes/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { useState, useContext, useEffect } from 'react';
import { decodeToken } from "react-jwt";
import { AuthContext } from '../autenticar/AuthProvider';
import Form from 'react-bootstrap/Form';
import { UrlLoginUsuarios } from '../url/urlSitioWeb';
import { UrlLoginUsuarios, servidor, descuentos_productos } from '../url/urlSitioWeb';
import { Link } from 'react-router-dom';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';
Expand All @@ -22,11 +22,10 @@ function Login() {
useEffect(() => {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/js/service-worker.js')
.then(function(registration) {
.then(function (registration) {
console.log('Service Worker registrado con éxito:', registration);
subscribeUser(registration);
})
.catch(function(error) {
.catch(function (error) {
console.log('Registro de Service Worker fallido:', error);
});
}
Expand Down Expand Up @@ -65,10 +64,15 @@ function Login() {
const token = data.token;
console.log('Token recibido:', token);
localStorage.setItem('authToken', token);
window.location.href = data.redirect;
const decodedToken = decodeToken(token);
console.log('Token decodificado:', decodedToken);
await subscribeUser(decodedToken._id);
login(decodedToken);

// Obtener productos con descuento
await fetchDescuentos(decodedToken._id);

window.location.href = data.redirect;
} else {
const data = await res.json();
console.log('Error en el inicio de sesión:', data.message);
Expand All @@ -80,41 +84,59 @@ function Login() {
}
};

const subscribeUser = (registration) => {
const subscribeUser = async (userId) => {
console.log('Preparando suscripción a notificaciones push...');
Notification.requestPermission().then(permission => {
if (permission === 'granted') {
registration.pushManager.subscribe({
const registration = await navigator.serviceWorker.ready;
const permission = await Notification.requestPermission();

if (permission === 'granted') {
try {
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)
})
.then(function(subscription) {
console.log('Usuario suscrito:', subscription);
fetch('https://back-end-enfermera.vercel.app/subscribe/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(subscription)
})
.then(response => {
if (response.ok) {
console.log('Suscripción enviada al servidor con éxito.');
} else {
console.log('Error al enviar la suscripción al servidor.');
}
})
.catch(error => {
console.error('Error al enviar la suscripción al servidor:', error);
});
})
.catch(function(error) {
console.log('Fallo en la suscripción:', error);
});
console.log('Usuario suscrito:', subscription);

const response = await fetch(`${servidor}/subscribe/`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ userId, subscription })
});

if (response.ok) {
console.log('Suscripción enviada al servidor con éxito.');
} else {
console.log('Error al enviar la suscripción al servidor.');
}
} catch (error) {
console.log('Fallo en la suscripción:', error);
}
} else {
console.log('Permiso de notificación no concedido.');
}
};

const fetchDescuentos = async (userId) => {
console.log('Obteniendo productos con descuento...');
try {
const response = await fetch(descuentos_productos, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ userId })
});

if (response.ok) {
console.log('Productos con descuento obtenidos con éxito.');
} else {
console.log('Permiso de notificación no concedido.');
console.log('Error al obtener productos con descuento.');
}
});
} catch (error) {
console.error('Error al obtener productos con descuento:', error);
}
};

const urlBase64ToUint8Array = (base64String) => {
Expand All @@ -141,12 +163,12 @@ function Login() {
<div className="col-md-5 border">
<Form onSubmit={handleSubmit}>
<h2 className="m-2 text-center">Inicio de Sesión</h2>
<Form.Group >
<Form.Group>
<Form.Label>Correo Electrónico</Form.Label>
<div className="input-group" >
<div className="input-group">
<span className="input-group-text" id="basic-addon1"><i className="fa fa-envelope"></i></span>
<input type="email"
id='cajaTexto'
id='cajaTextoEmail'
className={`form-control ${showError && !email ? 'is-invalid' : ''}`}
placeholder="Ingresa tu correo electrónico"
aria-describedby="basic-addon1" value={email}
Expand All @@ -159,7 +181,7 @@ function Login() {
)}
</Form.Group>

<Form.Group className="input-group mb-1" >
<Form.Group className="input-group mb-1">
<Form.Label className='mt-1'>Contraseña</Form.Label>
<div className="input-group">
<span className="input-group-text" id="basic-addon1"><i className="fa fa-lock"></i></span>
Expand All @@ -168,7 +190,7 @@ function Login() {
placeholder="Ingresa tu contraseña"
aria-describedby="basic-addon1"
value={password}
id='cajaTexto'
id='cajaTextoPassword'
onChange={(e) => setPassword(e.target.value)}
className={`form-control ${showError && !password ? 'is-invalid' : ''}`}
/>
Expand All @@ -194,7 +216,7 @@ function Login() {
</div>

<div className='text-center m-2 mb-3'>
<Link className="link-primary " to="/recuperarPassword">
<Link className="link-primary" to="/recuperarPassword">
¿Olvidaste tu contraseña?
</Link>
</div>
Expand Down
3 changes: 3 additions & 0 deletions src/url/urlSitioWeb.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const UrlLoginUsuarios = "https://back-end-enfermera.vercel.app/api/auth/

export const Productos = "https://back-end-enfermera.vercel.app/api/productos/productos";//Para productos
// export const Productos = "http://localhost:3000/api/productos/productos";//Para productos
export const descuentos_productos = 'https://back-end-enfermera.vercel.app/api/productos/descuentos';

export const categoria_productos = "https://back-end-enfermera.vercel.app/api/productos/productos/categoria/";
export const img = "https://back-end-enfermera.vercel.app/api/productos/imagenes"; //Para subir imgenes de productos
Expand All @@ -21,6 +22,7 @@ export const urlCloudinary = "https://api.cloudinary.com/v1_1/droihhnng/image/up

// ***************************Carrito de compra*********************************************
export const CarritoCompras = "https://back-end-enfermera.vercel.app/api/carrito";//Para Carrito
// export const CarritoCompras = "http://localhost:3000/api/carrito";//Para Carrito
// para Realizar pagos con stripe
export const Stripe = "https://back-end-enfermera.vercel.app/api/stripe/create-checkout-session";//Para Carrito
// export const Stripe = "http://localhost:3000/api/stripe/create-checkout-session";//Para Carrito
Expand All @@ -47,4 +49,5 @@ export const servidor = "https://back-end-enfermera.vercel.app"
//--------------------------- pago renta ------------------------------------------------------------------------------------------
export const Verificar_Pago = "https://back-end-enfermera.vercel.app/api/rentas/verify-payment/" //verifica si el pago se realizó con exito
export const Pagar_renta = "https://back-end-enfermera.vercel.app/api/rentas/create-checkout-session" //Para el pago de renta
// export const Pagar_renta = "http://localhost:3000/api/rentas/create-checkout-session" //Para el pago de renta
export const pagos_Cancelados_Renta = "https://back-end-enfermera.vercel.app/api/rentas/cancelado/" //verifica si el pago se realizó con exito

0 comments on commit 800bfdc

Please sign in to comment.