monitoring/api/user_api.py

40 lines
1.6 KiB
Python

# _*_ 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="注册用户")
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="用户登录")
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], "password"), expire_time)
return {"code": 200, "message": "登录成功", "access_token": token, "user": user[1], "token_type": "Bearer"}
return error_211(message=user[1])