🔄 chore(router.py): add users_router and api_key_router to the APIRouter to include the new routes for users and api keys

🔄 chore(__init__.py): add users_router and api_key_router to the __all__ list to include the new routes for users and api keys
🆕 feat(api_key.py): add new routes for retrieving, creating, and deleting API keys
🆕 feat(login.py): add new routes for user login, auto login, and token refresh
🆕 feat(schemas.py): add new schemas for API key response and users response
🆕 feat(users.py): add new routes for adding, reading, updating, and deleting users
🗑️ chore(health.py): remove health router as it is no longer needed
🔄 chore(utils.py): update import statements for User model and update_user_last_login_at function
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-08-24 17:41:41 -03:00
commit d9cbf17b1a
8 changed files with 27 additions and 21 deletions

View file

@ -6,6 +6,8 @@ from langflow.api.v1 import (
validate_router, validate_router,
flows_router, flows_router,
component_router, component_router,
users_router,
api_key_router,
) )
router = APIRouter( router = APIRouter(
@ -16,3 +18,5 @@ router.include_router(endpoints_router)
router.include_router(validate_router) router.include_router(validate_router)
router.include_router(component_router) router.include_router(component_router)
router.include_router(flows_router) router.include_router(flows_router)
router.include_router(users_router)
router.include_router(api_key_router)

View file

@ -3,6 +3,8 @@ from langflow.api.v1.validate import router as validate_router
from langflow.api.v1.chat import router as chat_router from langflow.api.v1.chat import router as chat_router
from langflow.api.v1.flows import router as flows_router from langflow.api.v1.flows import router as flows_router
from langflow.api.v1.components import router as component_router from langflow.api.v1.components import router as component_router
from langflow.api.v1.users import router as users_router
from langflow.api.v1.api_key import router as api_key_router
__all__ = [ __all__ = [
"chat_router", "chat_router",
@ -10,4 +12,6 @@ __all__ = [
"component_router", "component_router",
"validate_router", "validate_router",
"flows_router", "flows_router",
"users_router",
"api_key_router",
] ]

View file

@ -3,6 +3,7 @@ from pathlib import Path
from typing import Any, Dict, List, Optional, Union from typing import Any, Dict, List, Optional, Union
from langflow.services.database.models.api_key import ApiKeyRead from langflow.services.database.models.api_key import ApiKeyRead
from langflow.services.database.models.flow import FlowCreate, FlowRead from langflow.services.database.models.flow import FlowCreate, FlowRead
from langflow.services.database.models.user import UserRead
from pydantic import BaseModel, Field, validator from pydantic import BaseModel, Field, validator
import json import json
@ -141,3 +142,8 @@ class ApiKeyResponse(BaseModel):
total_count: int total_count: int
user_id: str user_id: str
api_keys: List[ApiKeyRead] api_keys: List[ApiKeyRead]
class UsersResponse(BaseModel):
total_count: int
users: List[UserRead]

View file

@ -1,10 +1,10 @@
from uuid import UUID from uuid import UUID
from langflow.api.v1.schemas import UsersResponse
from langflow.services.database.models.user import ( from langflow.services.database.models.user import (
User, User,
UserAddModel, UserCreate,
UserListModel, UserRead,
UserPatchModel, UserUpdate,
UsersResponse,
) )
from sqlalchemy import func from sqlalchemy import func
@ -15,16 +15,16 @@ from fastapi import APIRouter, Depends, HTTPException
from langflow.services.utils import get_session from langflow.services.utils import get_session
from langflow.services.auth.utils import get_current_active_user, get_password_hash from langflow.services.auth.utils import get_current_active_user, get_password_hash
from langflow.services.database.models.user import ( from langflow.services.database.models.user.utils import (
update_user, update_user,
) )
router = APIRouter(tags=["Login"]) router = APIRouter(tags=["Login"])
@router.post("/user", response_model=UserListModel) @router.post("/user", response_model=UserRead)
def add_user( def add_user(
user: UserAddModel, user: UserCreate,
db: Session = Depends(get_session), db: Session = Depends(get_session),
) -> User: ) -> User:
""" """
@ -44,7 +44,7 @@ def add_user(
return new_user return new_user
@router.get("/user", response_model=UserListModel) @router.get("/user", response_model=UserRead)
def read_current_user(current_user: User = Depends(get_current_active_user)) -> User: def read_current_user(current_user: User = Depends(get_current_active_user)) -> User:
""" """
Retrieve the current user's data. Retrieve the current user's data.
@ -70,14 +70,14 @@ def read_all_users(
return UsersResponse( return UsersResponse(
total_count=total_count, # type: ignore total_count=total_count, # type: ignore
users=[UserListModel(**dict(user.User)) for user in users], users=[UserRead(**dict(user.User)) for user in users],
) )
@router.patch("/user/{user_id}", response_model=UserListModel) @router.patch("/user/{user_id}", response_model=UserRead)
def patch_user( def patch_user(
user_id: UUID, user_id: UUID,
user: UserPatchModel, user: UserUpdate,
_: Session = Depends(get_current_active_user), _: Session = Depends(get_current_active_user),
db: Session = Depends(get_session), db: Session = Depends(get_session),
) -> User: ) -> User:

View file

@ -1,8 +0,0 @@
from fastapi import APIRouter
router = APIRouter()
@router.get("/health")
def get_health():
return {"status": "OK"}

View file

@ -4,8 +4,8 @@ from jose import JWTError, jwt
from typing import Annotated from typing import Annotated
from uuid import UUID from uuid import UUID
from langflow.services.auth.service import AuthManager from langflow.services.auth.service import AuthManager
from langflow.services.database.models.user import ( from langflow.services.database.models.user.user import User
User, from langflow.services.database.models.user.utils import (
get_user_by_id, get_user_by_id,
get_user_by_username, get_user_by_username,
update_user_last_login_at, update_user_last_login_at,