From e6bd9a07d520d559ad9065b4f75ce286fef30f8a Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 21 Aug 2023 16:33:27 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(auth.py):=20update=20import?= =?UTF-8?q?=20statements=20for=20User=20model=20and=20related=20functions?= =?UTF-8?q?=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20fix(aut?= =?UTF-8?q?h.py):=20update=20import=20statements=20for=20settings=5Fmanage?= =?UTF-8?q?r=20and=20related=20settings=20to=20match=20new=20file=20struct?= =?UTF-8?q?ure=20=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to?= =?UTF-8?q?=20settings=5Fmanager.settings=20to=20settings=5Fmanager.auth?= =?UTF-8?q?=5Fsettings=20to=20match=20new=20file=20structure=20?= =?UTF-8?q?=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to=20setti?= =?UTF-8?q?ngs=5Fmanager.settings=20to=20settings=5Fmanager.auth=5Fsetting?= =?UTF-8?q?s=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20fix(au?= =?UTF-8?q?th.py):=20update=20references=20to=20settings=5Fmanager.setting?= =?UTF-8?q?s=20to=20settings=5Fmanager.auth=5Fsettings=20to=20match=20new?= =?UTF-8?q?=20file=20structure=20=F0=9F=94=A7=20fix(auth.py):=20update=20r?= =?UTF-8?q?eferences=20to=20settings=5Fmanager.settings=20to=20settings=5F?= =?UTF-8?q?manager.auth=5Fsettings=20to=20match=20new=20file=20structure?= =?UTF-8?q?=20=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to=20se?= =?UTF-8?q?ttings=5Fmanager.settings=20to=20settings=5Fmanager.auth=5Fsett?= =?UTF-8?q?ings=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20fix?= =?UTF-8?q?(auth.py):=20update=20references=20to=20settings=5Fmanager.sett?= =?UTF-8?q?ings=20to=20settings=5Fmanager.auth=5Fsettings=20to=20match=20n?= =?UTF-8?q?ew=20file=20structure=20=F0=9F=94=A7=20fix(auth.py):=20update?= =?UTF-8?q?=20references=20to=20settings=5Fmanager.settings=20to=20setting?= =?UTF-8?q?s=5Fmanager.auth=5Fsettings=20to=20match=20new=20file=20structu?= =?UTF-8?q?re=20=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to=20?= =?UTF-8?q?settings=5Fmanager.settings=20to=20settings=5Fmanager.auth=5Fse?= =?UTF-8?q?ttings=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20f?= =?UTF-8?q?ix(auth.py):=20update=20references=20to=20settings=5Fmanager.se?= =?UTF-8?q?ttings=20to=20settings=5Fmanager.auth=5Fsettings=20to=20match?= =?UTF-8?q?=20new=20file=20structure=20=F0=9F=94=A7=20fix(auth.py):=20upda?= =?UTF-8?q?te=20references=20to=20settings=5Fmanager.settings=20to=20setti?= =?UTF-8?q?ngs=5Fmanager.auth=5Fsettings=20to=20match=20new=20file=20struc?= =?UTF-8?q?ture=20=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to?= =?UTF-8?q?=20settings=5Fmanager.settings=20to=20settings=5Fmanager.auth?= =?UTF-8?q?=5Fsettings=20to=20match=20new=20file=20structure=20?= =?UTF-8?q?=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to=20setti?= =?UTF-8?q?ngs=5Fmanager.settings=20to=20settings=5Fmanager.auth=5Fsetting?= =?UTF-8?q?s=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20fix(au?= =?UTF-8?q?th.py):=20update=20references=20to=20settings=5Fmanager.setting?= =?UTF-8?q?s=20to=20settings=5Fmanager.auth=5Fsettings=20to=20match=20new?= =?UTF-8?q?=20file=20structure=20=F0=9F=94=A7=20fix(auth.py):=20update=20r?= =?UTF-8?q?eferences=20to=20settings=5Fmanager.settings=20to=20settings=5F?= =?UTF-8?q?manager.auth=5Fsettings=20to=20match=20new=20file=20structure?= =?UTF-8?q?=20=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to=20se?= =?UTF-8?q?ttings=5Fmanager.settings=20to=20settings=5Fmanager.auth=5Fsett?= =?UTF-8?q?ings=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20fix?= =?UTF-8?q?(auth.py):=20update=20references=20to=20settings=5Fmanager.sett?= =?UTF-8?q?ings=20to=20settings=5Fmanager.auth=5Fsettings=20to=20match=20n?= =?UTF-8?q?ew=20file=20structure=20=F0=9F=94=A7=20fix(auth.py):=20update?= =?UTF-8?q?=20references=20to=20settings=5Fmanager.settings=20to=20setting?= =?UTF-8?q?s=5Fmanager.auth=5Fsettings=20to=20match=20new=20file=20structu?= =?UTF-8?q?re=20=F0=9F=94=A7=20fix(auth.py):=20update=20references=20to=20?= =?UTF-8?q?settings=5Fmanager.settings=20to=20settings=5Fmanager.auth=5Fse?= =?UTF-8?q?ttings=20to=20match=20new=20file=20structure=20=F0=9F=94=A7=20f?= =?UTF-8?q?ix(auth.py):=20update=20references=20to=20settings=5Fmanager.se?= =?UTF-8?q?ttings=20to=20settings=5Fmanager.auth=5Fsettings=20to=20match?= =?UTF-8?q?=20new=20file=20structure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/auth/auth.py | 34 +++++++++++++++------------ src/backend/langflow/routers/login.py | 4 ++-- src/backend/langflow/routers/users.py | 14 ++++++----- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/backend/langflow/auth/auth.py b/src/backend/langflow/auth/auth.py index 9d4f12862..f274a9523 100644 --- a/src/backend/langflow/auth/auth.py +++ b/src/backend/langflow/auth/auth.py @@ -1,6 +1,11 @@ from uuid import UUID from typing import Annotated from jose import JWTError, jwt +from langflow.services.database.models.user import ( + User, + get_user_by_id, + get_user_by_username, +) from sqlalchemy.orm import Session from passlib.context import CryptContext from fastapi.security import OAuth2PasswordBearer @@ -9,10 +14,7 @@ from datetime import datetime, timedelta, timezone from langflow.services.utils import get_settings_manager, get_session -from langflow.database.models.user import ( - User, - get_user_by_id, - get_user_by_username, +from langflow.services.database.models.user import ( update_user_last_login_at, ) @@ -35,8 +37,8 @@ async def get_current_user( try: payload = jwt.decode( token, - settings_manager.settings.SECRET_KEY, - algorithms=[settings_manager.settings.ALGORITHM], + settings_manager.auth_settings.SECRET_KEY, + algorithms=[settings_manager.auth_settings.ALGORITHM], ) user_id: UUID = payload.get("sub") # type: ignore token_type: str = payload.get("type") # type: ignore @@ -77,21 +79,23 @@ def create_token(data: dict, expires_delta: timedelta): return jwt.encode( to_encode, - settings_manager.settings.SECRET_KEY, - algorithm=settings_manager.settings.ALGORITHM, + settings_manager.auth_settings.SECRET_KEY, + algorithm=settings_manager.auth_settings.ALGORITHM, ) def create_super_user(db: Session = Depends(get_session)) -> User: settings_manager = get_settings_manager() - super_user = get_user_by_username(db, settings_manager.settings.FIRST_SUPERUSER) + super_user = get_user_by_username( + db, settings_manager.auth_settings.FIRST_SUPERUSER + ) if not super_user: super_user = User( - username=settings_manager.settings.FIRST_SUPERUSER, + username=settings_manager.auth_settings.FIRST_SUPERUSER, password=get_password_hash( - settings_manager.settings.FIRST_SUPERUSER_PASSWORD + settings_manager.auth_settings.FIRST_SUPERUSER_PASSWORD ), is_superuser=True, is_active=True, @@ -147,7 +151,7 @@ def create_user_tokens( settings_manager = get_settings_manager() access_token_expires = timedelta( - minutes=settings_manager.settings.ACCESS_TOKEN_EXPIRE_MINUTES + minutes=settings_manager.auth_settings.ACCESS_TOKEN_EXPIRE_MINUTES ) access_token = create_token( data={"sub": str(user_id)}, @@ -155,7 +159,7 @@ def create_user_tokens( ) refresh_token_expires = timedelta( - minutes=settings_manager.settings.REFRESH_TOKEN_EXPIRE_MINUTES + minutes=settings_manager.auth_settings.REFRESH_TOKEN_EXPIRE_MINUTES ) refresh_token = create_token( data={"sub": str(user_id), "type": "rf"}, @@ -179,8 +183,8 @@ def create_refresh_token(refresh_token: str, db: Session = Depends(get_session)) try: payload = jwt.decode( refresh_token, - settings_manager.settings.SECRET_KEY, - algorithms=[settings_manager.settings.ALGORITHM], + settings_manager.auth_settings.SECRET_KEY, + algorithms=[settings_manager.auth_settings.ALGORITHM], ) user_id: UUID = payload.get("sub") # type: ignore token_type: str = payload.get("type") # type: ignore diff --git a/src/backend/langflow/routers/login.py b/src/backend/langflow/routers/login.py index de255a0d5..6a103d646 100644 --- a/src/backend/langflow/routers/login.py +++ b/src/backend/langflow/routers/login.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, HTTPException, status from fastapi.security import OAuth2PasswordRequestForm from langflow.services.utils import get_session -from langflow.database.models.token import Token +from langflow.services.database.models import Token from langflow.auth.auth import ( authenticate_user, create_user_tokens, @@ -36,7 +36,7 @@ async def login_to_get_access_token( async def auto_login(db: Session = Depends(get_session)): settings_manager = get_settings_manager() - if settings_manager.settings.AUTO_LOGIN: + if settings_manager.auth_settings.AUTO_LOGIN: return create_user_longterm_token(db) raise HTTPException( diff --git a/src/backend/langflow/routers/users.py b/src/backend/langflow/routers/users.py index 04972c976..135437b74 100644 --- a/src/backend/langflow/routers/users.py +++ b/src/backend/langflow/routers/users.py @@ -1,4 +1,11 @@ from uuid import UUID +from langflow.services.database.models.user import ( + User, + UserAddModel, + UserListModel, + UserPatchModel, + UsersResponse, +) from sqlalchemy import func from sqlalchemy.exc import IntegrityError @@ -8,12 +15,7 @@ from fastapi import APIRouter, Depends, HTTPException from langflow.services.utils import get_session from langflow.auth.auth import get_current_active_user, get_password_hash -from langflow.database.models.user import ( - User, - UserAddModel, - UserListModel, - UserPatchModel, - UsersResponse, +from langflow.services.database.models.user import ( update_user, )