From 81816baadae57a70c10772397ec9848a6fd2d277 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 25 Aug 2023 10:24:01 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(login.py):=20update=20import?= =?UTF-8?q?=20statement=20from=20sqlalchemy.orm=20to=20sqlmodel.Session=20?= =?UTF-8?q?for=20Session=20class=20=F0=9F=94=A7=20fix(users.py):=20update?= =?UTF-8?q?=20type=20annotation=20for=20current=5Fuser=20parameter=20from?= =?UTF-8?q?=20Session=20to=20User=20=F0=9F=94=A7=20fix(utils.py):=20update?= =?UTF-8?q?=20import=20statement=20from=20sqlalchemy.orm=20to=20sqlmodel.S?= =?UTF-8?q?ession=20=F0=9F=94=A7=20fix(utils.py):=20update=20type=20annota?= =?UTF-8?q?tion=20for=20token=20parameter=20from=20Annotated=20to=20Union[?= =?UTF-8?q?Coroutine,=20str]=20=F0=9F=94=A7=20fix(utils.py):=20update=20ty?= =?UTF-8?q?pe=20annotation=20for=20get=5Fuser=5Fby=5Fusername=20function?= =?UTF-8?q?=20return=20type=20from=20User=20to=20Union[User,=20None]=20?= =?UTF-8?q?=F0=9F=94=A7=20fix(utils.py):=20update=20type=20annotation=20fo?= =?UTF-8?q?r=20get=5Fuser=5Fby=5Fid=20function=20return=20type=20from=20Us?= =?UTF-8?q?er=20to=20Union[User,=20None]=20=F0=9F=94=A7=20fix(manager.py):?= =?UTF-8?q?=20update=20type=20annotation=20for=20dependencies=20parameter?= =?UTF-8?q?=20in=20register=5Ffactory=20method=20from=20List=20to=20Option?= =?UTF-8?q?al[List]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/v1/login.py | 2 +- src/backend/langflow/api/v1/users.py | 2 +- src/backend/langflow/services/auth/utils.py | 10 +++++++--- .../langflow/services/database/models/user/utils.py | 5 +++-- src/backend/langflow/services/manager.py | 6 ++++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/backend/langflow/api/v1/login.py b/src/backend/langflow/api/v1/login.py index 600e373df..a11167a40 100644 --- a/src/backend/langflow/api/v1/login.py +++ b/src/backend/langflow/api/v1/login.py @@ -1,4 +1,4 @@ -from sqlalchemy.orm import Session +from sqlmodel import Session from fastapi import APIRouter, Depends, HTTPException, status from fastapi.security import OAuth2PasswordRequestForm diff --git a/src/backend/langflow/api/v1/users.py b/src/backend/langflow/api/v1/users.py index 5a464b5f2..e41551e8c 100644 --- a/src/backend/langflow/api/v1/users.py +++ b/src/backend/langflow/api/v1/users.py @@ -96,7 +96,7 @@ def patch_user( @router.delete("/user/{user_id}") def delete_user( user_id: UUID, - current_user: Session = Depends(get_current_active_superuser), + current_user: User = Depends(get_current_active_superuser), db: Session = Depends(get_session), ) -> dict: """ diff --git a/src/backend/langflow/services/auth/utils.py b/src/backend/langflow/services/auth/utils.py index ae6065beb..540b012b1 100644 --- a/src/backend/langflow/services/auth/utils.py +++ b/src/backend/langflow/services/auth/utils.py @@ -1,7 +1,7 @@ from datetime import datetime, timedelta, timezone from fastapi import Depends, HTTPException, Request, status from jose import JWTError, jwt -from typing import Annotated +from typing import Annotated, Coroutine from uuid import UUID from langflow.services.auth.service import AuthManager from langflow.services.database.models.user.user import User @@ -11,7 +11,7 @@ from langflow.services.database.models.user.utils import ( update_user_last_login_at, ) from langflow.services.utils import get_session, get_settings_manager -from sqlalchemy.orm import Session +from sqlmodel import Session def auth_scheme_dependency(request: Request): @@ -33,9 +33,13 @@ async def get_current_user( detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) + + if isinstance(token, Coroutine): + token = await token + try: payload = jwt.decode( - await token, + token, settings_manager.auth_settings.SECRET_KEY, algorithms=[settings_manager.auth_settings.ALGORITHM], ) diff --git a/src/backend/langflow/services/database/models/user/utils.py b/src/backend/langflow/services/database/models/user/utils.py index 514ca4e82..3dc02a499 100644 --- a/src/backend/langflow/services/database/models/user/utils.py +++ b/src/backend/langflow/services/database/models/user/utils.py @@ -1,4 +1,5 @@ from datetime import datetime, timezone +from typing import Union from uuid import UUID from fastapi import Depends, HTTPException from langflow.services.database.models.user.user import User, UserUpdate @@ -10,11 +11,11 @@ from sqlmodel import Session from sqlalchemy.orm.attributes import flag_modified -def get_user_by_username(db: Session, username: str) -> User: +def get_user_by_username(db: Session, username: str) -> Union[User, None]: return db.query(User).filter(User.username == username).first() -def get_user_by_id(db: Session, id: UUID) -> User: +def get_user_by_id(db: Session, id: UUID) -> Union[User, None]: return db.query(User).filter(User.id == id).first() diff --git a/src/backend/langflow/services/manager.py b/src/backend/langflow/services/manager.py index 1592e7612..e9895adab 100644 --- a/src/backend/langflow/services/manager.py +++ b/src/backend/langflow/services/manager.py @@ -1,5 +1,5 @@ from langflow.services.schema import ServiceType -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, List, Optional if TYPE_CHECKING: from langflow.services.factory import ServiceFactory @@ -16,7 +16,9 @@ class ServiceManager: self.dependencies = {} def register_factory( - self, service_factory: "ServiceFactory", dependencies: List[ServiceType] = None + self, + service_factory: "ServiceFactory", + dependencies: Optional[List[ServiceType]] = None, ): """ Registers a new factory with dependencies.