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 fd8c434..e28f9df 100644 Binary files a/src/db/cryptid.db and b/src/db/cryptid.db differ diff --git a/src/service/user.py b/src/service/user.py index ed69e45..43a9669 100644 --- a/src/service/user.py +++ b/src/service/user.py @@ -46,7 +46,7 @@ def get_current_user(token: str) -> 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"}