# _*_ coding: utf-8 _*_ # @Time :2022/5/29 09:16 # @Email :508737091@qq.com # @Author :qiangyanwen # @File :user_api.py from fastapi import APIRouter, Body, Depends, Query from typing_extensions import Annotated from config import settings from config.factory import AutomationResponse from entity.user_entity import UserFrom from sqlalchemy.orm import Session from config.db_session import get_db from repository.user_repository import login_user from service.user_service import user_service from utils.jwt_token import create_token from utils.response import success_200,error_211 from fastapi.security import OAuth2PasswordRequestForm from datetime import timedelta router = APIRouter(prefix="/api", tags=["用户模块"]) @router.post("/register/user", summary="注册用户", name="注册用户") async def register(user: Annotated[UserFrom, Body(...)], db: Session = Depends(get_db)): user = user_service(db, user) if isinstance(user,dict): return success_200(data=user, message="用户注册成功") return error_211(message=user) @router.post("/login", summary="用户登录", name="用户登录") async def login(user: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)): user = login_user(db, user.username, user.password) if user[0]: expire_time = timedelta(minutes=settings.ACCESS.ACCESS_TOKEN_EXPIRE_MINUTES) token = create_token(AutomationResponse.model_to_dict(user[1]), expire_time) return {"code": 200, "message": "登录成功", "access_token": token, "user": AutomationResponse.model_to_dict(user[1], "password"), "token_type": "Bearer"} return error_211(message=user[1])