diff --git a/Pipfile b/Pipfile index a475bfc38a..d0461f8312 100644 --- a/Pipfile +++ b/Pipfile @@ -22,6 +22,7 @@ flask-mail = "*" flask-migrate = "*" sqlalchemy = "*" flask-sqlalchemy = "*" +stripe = "*" [requires] python_version = "3.13" diff --git a/Pipfile.lock b/Pipfile.lock index ad4f63b662..318f2d79fa 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "ffbb99bdc7f9b5365cbac326bac4ed80e2f0f9a8758a61f0407d2983663030a3" + "sha256": "e1eef7c77c9fa44cf035ade402fa24db0ae143cceebe71285e4a4eef84ddd84d" }, "pipfile-spec": 6, "requires": { @@ -91,11 +91,96 @@ }, "certifi": { "hashes": [ - "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", - "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" + "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", + "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5" ], - "markers": "python_version >= '3.6'", - "version": "==2025.1.31" + "markers": "python_version >= '3.7'", + "version": "==2025.8.3" + }, + "charset-normalizer": { + "hashes": [ + "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91", + "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0", + "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", + "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601", + "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", + "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07", + "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c", + "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64", + "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", + "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", + "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432", + "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", + "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", + "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", + "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae", + "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19", + "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", + "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e", + "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4", + "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7", + "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312", + "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", + "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", + "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c", + "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", + "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99", + "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b", + "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", + "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", + "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", + "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", + "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", + "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0", + "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc", + "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", + "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f", + "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a", + "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40", + "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", + "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849", + "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", + "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", + "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05", + "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", + "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c", + "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a", + "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", + "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34", + "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9", + "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", + "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14", + "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30", + "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b", + "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b", + "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942", + "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", + "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", + "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b", + "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", + "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669", + "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0", + "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", + "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", + "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe", + "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", + "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", + "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", + "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2", + "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca", + "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", + "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f", + "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb", + "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", + "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557", + "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", + "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7", + "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72", + "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c", + "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9" + ], + "markers": "python_version >= '3.7'", + "version": "==3.4.3" }, "click": { "hashes": [ @@ -257,6 +342,14 @@ "index": "pypi", "version": "==23.0.0" }, + "idna": { + "hashes": [ + "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" + ], + "markers": "python_version >= '3.6'", + "version": "==3.10" + }, "itsdangerous": { "hashes": [ "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", @@ -505,6 +598,14 @@ "markers": "python_version >= '3.8'", "version": "==6.0.2" }, + "requests": { + "hashes": [ + "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", + "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" + ], + "markers": "python_version >= '3.8'", + "version": "==2.32.4" + }, "six": { "hashes": [ "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", @@ -577,6 +678,15 @@ "markers": "python_version >= '3.7'", "version": "==2.0.43" }, + "stripe": { + "hashes": [ + "sha256:10720fcbf075a0b4e3eefb209a005c94564ac0f6166d284ff3164439f39af86c", + "sha256:1cd1f5b0579867923081bacf594959d1f403f218223a06dc38273beb07d01567" + ], + "index": "pypi", + "markers": "python_version >= '3.6'", + "version": "==12.4.0" + }, "typing-extensions": { "hashes": [ "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", @@ -588,11 +698,11 @@ }, "urllib3": { "hashes": [ - "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", - "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" + "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", + "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" ], "markers": "python_version >= '3.9'", - "version": "==2.3.0" + "version": "==2.5.0" }, "werkzeug": { "hashes": [ diff --git a/src/api/routes/payment.py b/src/api/routes/payment.py new file mode 100644 index 0000000000..ee6e5d99ab --- /dev/null +++ b/src/api/routes/payment.py @@ -0,0 +1,43 @@ +# #! /usr/bin/env python3.6 + +# """ +# server.py +# Stripe Sample. +# Python 3.6 or newer required. +# """ +import os +from flask import Flask, redirect, request +from api.models.Games import Games +import stripe +from api.database.db import db +# This is your test secret API key. +os.getenv('VITE_FRONT_URL') +stripe.api_key = os.getenv('SECRET_KEY_STRIPE') + +app = Flask(__name__, + static_url_path='', + static_folder='public') + + +YOUR_DOMAIN = os.getenv('VITE_FRONT_URL') + +@app.route("/checkout", methods=['POST']) +def create_checkout_session(): + try: + checkout_session = stripe.checkout.Session.create( + line_items=[ + #aqui va la logica del carrito de compra + ], + mode='payment', + success_url=YOUR_DOMAIN + '?success=true', + cancel_url=YOUR_DOMAIN + '?canceled=true', + ) + + except Exception as e: + return str(e) + + return redirect(checkout_session.url, code=303) + +if __name__ == '__main__': + app.run(port=4242) + diff --git a/src/api/routes/user.py b/src/api/routes/user.py index 94394090c3..58852c73fd 100644 --- a/src/api/routes/user.py +++ b/src/api/routes/user.py @@ -1,16 +1,19 @@ -from flask import Flask, request, jsonify, url_for, Blueprint # type: ignore +from flask import Flask, request, jsonify, url_for, Blueprint, current_app # type: ignore from api.models.User import User from api.database.db import db import bcrypt # type: ignore from flask_jwt_extended import create_access_token, jwt_required, get_jwt_identity # type: ignore from datetime import datetime, timedelta - +import os import secrets from extension import mail from flask_mail import Message +from itsdangerous import URLSafeTimedSerializer +from urllib.parse import quote +import re +url_front = os.getenv('VITE_FRONT_URL') -url_front = "https://solid-telegram-6x94qv5jvw62q54-3000.app.github.dev/" api = Blueprint("api/user", __name__) @@ -20,19 +23,17 @@ def forget_password(): body = request.get_json() user = User.query.filter_by(email=body["email"]).first() - + if user is None: return jsonify("La cuenta no existe"), 404 - payload = { - "email": body["email"] - } - token = secrets.token_urlsafe(75) - - - reset_url_password = f"https://refactored-couscous-x5p76ppwgq5v3xxr-3000.app.github.dev/resetPassword/{token}" + serializer = URLSafeTimedSerializer(os.getenv('TOKEN_KEY')) + token = serializer.dumps(body["email"], salt="password-reset") + print(type(token)) + nuevo_caracter = "_" - reset_url_password = f"{url_front}resetPassword/{token}" + cadena_modificada = re.sub(r"\.", nuevo_caracter, token) + reset_url_password = f"{url_front}resetPassword/{cadena_modificada}" msg = Message( 'Prueba de email', @@ -47,8 +48,20 @@ def forget_password(): def new_password(): body = request.get_json() - print(body) - return "email enviado", 200 + token = re.sub(r'_', r'.', body["token"]) + serializer = URLSafeTimedSerializer(os.getenv('TOKEN_KEY')) + email = serializer.loads( + token, salt="password-reset", max_age=60 #caduca el token el tiempo si no no deja cambairla + ) + + user = User.query.filter_by(email=email).first() + new_password = bcrypt.hashpw( + body['password'].encode(), bcrypt.gensalt()) + user.password = new_password.decode() + db.session.commit() + + + return "password actualizado", 200 # REGISTRO DE UN NUEVO USER @@ -110,14 +123,3 @@ def get_user(): return jsonify({"User": user.serialize()}) -# ELIMINAR USUARIO - -# @api.router("/user/",methods =["DELETE"]) -# def delete_user(user_id): -# user = db.session.get(User,user_id) -# if user is None: -# return jsonify("Error, no se ha podido eliminar por que el usuario no existe",404) -# db.session.delete(user) -# db.session.commit() - -# return jsonify("El usuario ha sido eliminado correctamente"),200 \ No newline at end of file diff --git a/src/front/components/Navbar.jsx b/src/front/components/Navbar.jsx index 3618bffa29..9d24b08942 100644 --- a/src/front/components/Navbar.jsx +++ b/src/front/components/Navbar.jsx @@ -18,7 +18,7 @@ export default function Navbar({showDrowpdown, setShowDrowpdown}) { localStorage.removeItem("user") dispatch({ type: 'setUser', - payload: nullm + payload: null }) console.log("Sin sesion") alert("Sesion finalizada") diff --git a/src/front/components/games/Games.jsx b/src/front/components/games/Games.jsx index 67b9153eb0..887cee5b95 100644 --- a/src/front/components/games/Games.jsx +++ b/src/front/components/games/Games.jsx @@ -106,9 +106,9 @@ export const Games = () => { )} - - {/* ---- boton para añadir al carro ---- */} -
+ { +token_user && ( +
+ )} + {/* ---- boton para añadir al carro ---- */} + { view && (
diff --git a/src/front/pages/aboutus/AboutUs.jsx b/src/front/pages/aboutus/AboutUs.jsx index fed497b157..09e9ce3356 100644 --- a/src/front/pages/aboutus/AboutUs.jsx +++ b/src/front/pages/aboutus/AboutUs.jsx @@ -4,95 +4,145 @@ import SilviaImg from "./img/Silvia.png"; import AlbertoImg from "./img/Alberto.jpg"; import AdrianImg from "./img/Adrian.png"; +import { Instagram } from 'lucide-react'; +import { Facebook } from 'lucide-react'; +import { Mail } from 'lucide-react'; +import { Twitter } from 'lucide-react'; + + + + export const AboutUs = () => { return ( - <> -
-

Sobre Nuestra Empresa GameStore

-

- En GameStore nos dedicamos a ofrecer productos y - servicios de alta calidad enfocados en la experiencia del cliente. -

-

- Nuestra misión es brindar soluciones innovadoras y personalizadas en - el ámbito tecnológico y del entretenimiento. Creemos en la - transparencia, el compromiso y la mejora continua como pilares - fundamentales de nuestro trabajo diario. -

-
-
-
- - Adrian -
-

Adrian Lombarte

-

- Experto en ventas con más de 10 años de experiencia ayudando a - nuestros clientes a encontrar la mejor solución para sus - necesidades. Su enfoque está en la atención personalizada y el - crecimiento sostenible. -

-
-
+ +
+
+

SOBRE NOSOTROS

+ +
+
+
+ + +
+
+
Lideres desde 1991
+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae culpa praesentium + consequatur beatae quia ipsam assumenda iure repellat harum adipisci debitis, amet voluptatibus veniam illum + dolorum aut numquam. Soluta, eaque?

+ +
-
- - Alberto -
-

Luis Alberto

-

- Responsable del soporte técnico 24/7. Se asegura de que todos - nuestros sistemas funcionen de manera óptima, ofreciendo - asistencia inmediata y soluciones rápidas para mantener a - nuestros clientes siempre conectados. -

+
+
+
Lideres desde 1991
+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae culpa praesentium + consequatur beatae quia ipsam assumenda iure repellat harum adipisci debitis, amet voluptatibus veniam illum + dolorum aut numquam. Soluta, eaque?

+ +
+
+ + + +
+
+
+

EQUIPO

+
+
+ ); }; diff --git a/src/front/pages/aboutus/aboutus.css b/src/front/pages/aboutus/aboutus.css index 9249f0b7a7..7bb24f9277 100644 --- a/src/front/pages/aboutus/aboutus.css +++ b/src/front/pages/aboutus/aboutus.css @@ -1,73 +1,137 @@ -.container{ - display:flex; - flex-direction:row; - justify-content:center; - margin-left: 25vw; -} -.item2, .item1{ - margin:0.5%; - height: 70vh; - cursor:pointer; - color: #ffffff; - opacity: 1; -} -.item1{ - align-self:flex-start; - width: 250px; - height: 250px; - object-fit: cover, contain; - border-radius: 8px; -} -.item1:hover,.item2:hover { - transition-duration:0.5s; - opacity: 0.5; - position:relative; +.title{ + height: 250px; + background-color: red; + border: 1px solid; + display: flex; + justify-content: center; + align-items: center; + background-image: url("data:image/jpeg;base64,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"); + background-size: cover; + background-size: contain; } -.item1:hover{ - bottom: 2px; +h1{ + font-size: 50px; + color: white; } - -.image-with-caption { - position: relative; +.description-1{ + + margin-top: 50px; + margin-bottom: 20px; display: flex; - flex-direction: column; - align-items: center; - text-align: center; - width: 250px; - margin: 0.9%; } - -.image-with-caption .caption { - text-align: center; - margin-top: 0.5rem; +.contain-img{ + + width: 30%; + margin-left: 80px; } - -.image-with-caption .caption h4 { - font-size: 1.2rem; - margin: 0; +.contain-text{ + width: 70%; +} +.contain-text p{ + color: black; + padding-right: 100px; +} +.contain-text h5{ +font-size: 30px; + color: black; + margin-bottom: 25px; +} +.img-1{ + border:1px solid black; + border-radius: 10px; + width: 400px; + height: 200px; + object-fit: cover; + transition: transform 0.3s ease; +} +.img-1:hover{ + transform: scale(1.1); } -.image-with-caption .caption p { - font-size: 0.9rem; - margin: 0.25rem 0 0; - color: #555; +.description-2{ + margin-top: 50px; + margin-bottom: 20px; + display: flex; +} +.contain-text-2{ + width: 70%; + padding-left: 100px; +} +.contain-text-2 p{ + color: black; + padding-right: 100px; +} +.contain-text-2 h5{ + font-size: 30px; + color: black; + margin-bottom: 25px; } +.img-2{ + border: 1px solid black; + border-radius: 10px; + width: 400px; + height: 200px; + object-fit: cover; + transition: transform 0.3s ease; +} +.contain-img-2{ + width: 30%; + margin-right: 80px; +} +.img-2:hover{ + transform: scale(1.1); +} +.contain-team{ + display: flex; + justify-content: space-around; -.about-company { - margin-top: 3rem; - padding: 2rem; - border-radius: 8px; text-align: center; } -.about-company h2 { - font-size: 2rem; - margin-bottom: 1rem; +.card-team{ + text-align: center; + border-radius: 10px; + justify-content: center; + width: 200px; + transition: transform 0.3s ease; + + background-color:black; + margin-left: 20px; + margin-bottom: 40px; + } - -.about-company p { - font-size: 1.1rem; - line-height: 1.6; - color: #333; +.card-team:hover{ + transform: scale(1.2); +} +.card-img{ +display: flex; +justify-content: center; +margin-bottom: 15px; +} +.card-team img{ + margin-top: 20px; + width: 125px; + height: 125px; + border-radius: 50%; + object-fit: cover; + +} +.description-card{ + color: white; +} +.contain-social{ + margin-top: 15px; + padding-bottom: 15px; + display: flex; + justify-content: space-around; +} +.title-2{ + margin-top: 50px; + text-align: center; +} +.title-2 h1{ + font-size: 50px; + color: black; + margin-bottom: 50px; } diff --git a/src/front/pages/carro/Carro.jsx b/src/front/pages/carro/Carro.jsx index bf2ebdd648..c0ff5c1685 100644 --- a/src/front/pages/carro/Carro.jsx +++ b/src/front/pages/carro/Carro.jsx @@ -131,12 +131,11 @@ export const Carro = () => { ${getTotal().toFixed(2)}

- +
+ +
)} @@ -172,3 +171,33 @@ export const Carro = () => {
); }; +const Message = ({ message }) => ( +
+

{message}

+
+); + +export default function App() { + const [message, setMessage] = useState(""); + + useEffect(() => { + // Check to see if this is a redirect back from Checkout + const query = new URLSearchParams(window.location.search); + + if (query.get("success")) { + setMessage("Order placed! You will receive an email confirmation."); + } + + if (query.get("canceled")) { + setMessage( + "Order canceled -- continue to shop around and checkout when you're ready." + ); + } + }, []); + + return message ? ( + + ) : ( + + ); +} diff --git a/src/front/pages/detailsGames/DetailsGames.jsx b/src/front/pages/detailsGames/DetailsGames.jsx index 652a357219..8ac6621a86 100644 --- a/src/front/pages/detailsGames/DetailsGames.jsx +++ b/src/front/pages/detailsGames/DetailsGames.jsx @@ -9,6 +9,9 @@ export const DetailsGames = () => { const [detailsGame, setDetailsGame] = useState([]); const { id } = useParams(); const { dispatch } = useGlobalReducer(); // <-- añadido + const token_user = localStorage.getItem('jwt-token'); + const user = localStorage.getItem('user'); + const [view, setview] = useState(false) const getDetailsGame = async () => { const responsive = await fetch(`${backendUrl}api/games/detailsgames/${id}`) @@ -20,6 +23,18 @@ export const DetailsGames = () => { getDetailsGame() }, []) + useEffect(() => { + if (user) { + let parseUser = JSON.parse(user) + if (parseUser.is_admin) { + setview(true) + } + } else { + setview(false) + } + console.log("hola", user, "Asdasd") + }, [token_user]); + // handler para añadir al carro const handleAddToCarro = () => { if (!detailsGame) return; @@ -62,7 +77,9 @@ export const DetailsGames = () => {
Precio: {detailsGame.price} €
-
+ { + token_user && ( +
+ )} + +
{/* Columna derecha: video */} diff --git a/src/front/pages/recPassword/RecPassword.jsx b/src/front/pages/recPassword/RecPassword.jsx index cb5a922982..77f4c03b2e 100644 --- a/src/front/pages/recPassword/RecPassword.jsx +++ b/src/front/pages/recPassword/RecPassword.jsx @@ -11,13 +11,14 @@ export const RecPassword = () => { const restaurarPassword = async (e) => { e.preventDefault() - await fetch(`${backendUrl}api/user/resetPassword`, { - method: "POST", - body: JSON.stringify({ "email": email }), - headers: { "Content-type": "application/json" } - }) - alert("Mensaje enviado al correo electronico") + await fetch(`${backendUrl}api/user/resetPassword`,{ + method: "POST", + body: JSON.stringify({"email": email}), + headers: { "Content-type": "application/json" } + }) + alert("Mensaje enviado al correo electronico") + } diff --git a/src/front/routes.jsx b/src/front/routes.jsx index 34be4149a4..3fa4552429 100644 --- a/src/front/routes.jsx +++ b/src/front/routes.jsx @@ -17,12 +17,16 @@ import { Login } from "./pages/login/Login.jsx"; import { Addgame } from "./pages/addgame/Addgame.jsx"; import { DetailsGames } from "./pages/detailsGames/DetailsGames.jsx"; import { Carro } from "./pages/carro/Carro.jsx"; + + + import { Historial } from "./pages/historial/Historial.jsx"; import { RecPassword } from "./pages/recPassword/RecPassword.jsx"; import { ResetPassword } from "./pages/resetPassword/ResetPassword.jsx"; import GamesByPlatform from "./components/games/GamesByPlatform.jsx"; + import { EditGames } from "./pages/editgames/EditGames.jsx"; @@ -51,11 +55,14 @@ export const router = createBrowserRouter( } /> {/* PAGINA Soporte STORE*/} } /> {/* PAGINA DETALLES GAMES*/} } /> {/* PAGINA Carrito*/} + + } /> } /> } /> } /> {/* PAGINA DETALLES GAMES*/} } /> + )