From ec407d38f36083541d7fe4e3d985a44d6f8f8373 Mon Sep 17 00:00:00 2001 From: Fabian Andrango <120144991+FabianAndrango@users.noreply.github.com> Date: Mon, 22 Dec 2025 21:04:03 -0500 Subject: [PATCH] Corregir errores en la creacion del token y guardar los datos en la BD de forma permanente --- .gitignore | 2 ++ requirements.txt | 28 ++++++++++++++++++++++++++++ src/data/user.py | 5 ++++- src/db/cryptid.db | Bin 36864 -> 36864 bytes src/service/user.py | 7 +++++-- src/web/user.py | 2 +- 6 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 .gitignore create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2483976 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +__pycache__/ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d0a32d5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,28 @@ +poetry +passlib[bcrypt] +black +pytest +fastapi +uvicorn +httpie +requests +httpx +mypy +python-jose[cryptography] +python-multipart +pytest-mock +hypothesis +schemathesis +locust +locust-grasshopper +uvicorn[standard] +gunicorn +torch +torchvision +transformers +aiofiles +tabulate +plotly +kaleido +pydantic +country_converter diff --git a/src/data/user.py b/src/data/user.py index 34e918c..b922f5d 100644 --- a/src/data/user.py +++ b/src/data/user.py @@ -1,5 +1,5 @@ from model.user import User -from .init import (curs, IntegrityError) +from .init import (curs, IntegrityError,conn) from error import Missing, Duplicate curs.execute("""create table if not exists @@ -44,6 +44,7 @@ def create(user: User, table:str = "user") -> User: params = model_to_dict(user) try: curs.execute(qry, params) + conn.commit() except IntegrityError: raise Duplicate(msg= f"{table}: user {user.name} already exists") @@ -59,6 +60,7 @@ def modify(name: str, user: User) -> User: "name0": name} curs.execute(qry, params) if curs.rowcount == 1: + conn.commit() return get_one(user.name) else: raise Missing(msg=f"User {name} not found") @@ -72,3 +74,4 @@ def delete(name: str) -> None: if curs.rowcount != 1: raise Missing(msg=f"User {name} not found") create(user, table="xuser") + conn.commit() diff --git a/src/db/cryptid.db b/src/db/cryptid.db index fd8c434b6835ef8cc0122b6ca78d12a4bc7dcea4..e28f9dfe83ea1340d3bb6da2ae3c982c6b50ba8e 100644 GIT binary patch delta 269 zcmZozz|^pSX@WGP{6raNR(S@!tP2}c=K6El8vn8 znK`+sMJh%~DuzZXsYYf+S%yx&zFA>rxk)9C-WkcIW_lH21tEEc$$_QW1%9dFIT>jt z6$T{{j{06sMd^CZsSFGZyrLzk#U-W1sYO5z9B}c!0b2Qxf&U@@L!gyc`8BziB^e User | None: def lookup_user(name: str) -> User | None: """Return a matching User fron the database for """ - if (user := data.get(name)): + if (user := data.get_one(name)): return user return None @@ -63,7 +63,7 @@ def create_access_token(data: dict, ): """Return a JWT access token""" src = data.copy() - now = datetime.utcnow() + now = datetime.datetime.utcnow() expires = expires or datetime.timedelta(minutes=TOKEN_EXPIRES) src.update({"exp": now + expires}) encoded_jwt = jwt.encode(src, SECRET_KEY, algorithm=ALGORITHM) @@ -78,6 +78,9 @@ def get_one(name) -> User: return data.get_one(name) def create(user: User) -> User: + plain_password = user.hash + hashed_password = get_hash(plain_password) + user.hash = hashed_password return data.create(user) def modify(name: str, user: User) -> User: diff --git a/src/web/user.py b/src/web/user.py index c07603b..1695c02 100644 --- a/src/web/user.py +++ b/src/web/user.py @@ -41,7 +41,7 @@ async def create_access_token( unauthed() expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) access_token = service.create_access_token( - data={"sub": user.username}, expires=expires + data={"sub": user.name}, expires=expires ) return {"access_token": access_token, "token_type": "bearer"}