🔄 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,
flows_router,
component_router,
users_router,
api_key_router,
)
router = APIRouter(
@ -16,3 +18,5 @@ router.include_router(endpoints_router)
router.include_router(validate_router)
router.include_router(component_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.flows import router as flows_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__ = [
"chat_router",
@ -10,4 +12,6 @@ __all__ = [
"component_router",
"validate_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 langflow.services.database.models.api_key import ApiKeyRead
from langflow.services.database.models.flow import FlowCreate, FlowRead
from langflow.services.database.models.user import UserRead
from pydantic import BaseModel, Field, validator
import json
@ -141,3 +142,8 @@ class ApiKeyResponse(BaseModel):
total_count: int
user_id: str
api_keys: List[ApiKeyRead]
class UsersResponse(BaseModel):
total_count: int
users: List[UserRead]

View file

@ -1,10 +1,10 @@
from uuid import UUID
from langflow.api.v1.schemas import UsersResponse
from langflow.services.database.models.user import (
User,
UserAddModel,
UserListModel,
UserPatchModel,
UsersResponse,
UserCreate,
UserRead,
UserUpdate,
)
from sqlalchemy import func
@ -15,16 +15,16 @@ from fastapi import APIRouter, Depends, HTTPException
from langflow.services.utils import get_session
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,
)
router = APIRouter(tags=["Login"])
@router.post("/user", response_model=UserListModel)
@router.post("/user", response_model=UserRead)
def add_user(
user: UserAddModel,
user: UserCreate,
db: Session = Depends(get_session),
) -> User:
"""
@ -44,7 +44,7 @@ def add_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:
"""
Retrieve the current user's data.
@ -70,14 +70,14 @@ def read_all_users(
return UsersResponse(
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(
user_id: UUID,
user: UserPatchModel,
user: UserUpdate,
_: Session = Depends(get_current_active_user),
db: Session = Depends(get_session),
) -> 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 uuid import UUID
from langflow.services.auth.service import AuthManager
from langflow.services.database.models.user import (
User,
from langflow.services.database.models.user.user import User
from langflow.services.database.models.user.utils import (
get_user_by_id,
get_user_by_username,
update_user_last_login_at,