daily/Router/UserRouter.py

56 lines
2.4 KiB
Python
Raw Normal View History

2023-02-28 13:52:51 +08:00
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Schemas import UserSchemas
from Crud import UserCrud
from Schemas.UserSchemas import TokenData
from Utils.AuthUtils import token_data_depend, create_token
from Utils.SqlAlchemyUtils import get_db
from Utils.VerifyCodeUtils import EmailVerifyCode, EmailVerifyType
router = APIRouter(
tags=["用户接口"],
prefix="/api/daily/user",
dependencies=[Depends(token_data_depend)]
)
# 授权登录后调用的接口,
@router.post('/login_to_app', response_model=UserSchemas.LoginToAppRes)
def login_to_app(req: UserSchemas.LoginToAppReq, db: Session = Depends(get_db)):
2023-02-28 16:28:48 +08:00
2023-02-28 13:52:51 +08:00
user = UserCrud.get_user_info(db, req.openid)
if not user:
user = UserCrud.create_user(db, req.openid)
token = create_token({'openid': user.openid, 'registered': user.registered})
return UserSchemas.LoginToAppRes(**user.to_dict(), token=token)
@router.post('/get_user_info', response_model=UserSchemas.GetUserInfoRes)
def get_user_info(token_data: TokenData = Depends(token_data_depend), db: Session = Depends(get_db)):
user = UserCrud.get_user_info(db, token_data.openid)
return UserSchemas.GetUserInfoRes(**user.to_dict())
# 修改用户的邮箱、姓名、部门信息,需要进行邮箱验证码验证
2023-02-28 16:28:48 +08:00
@router.post('/change_user_info')
2023-02-28 13:52:51 +08:00
def change_user_info(req: UserSchemas.ChangeUserInfoReq, token_data: TokenData = Depends(token_data_depend),
db: Session = Depends(get_db)):
checked = EmailVerifyCode.check_code(req.email, req.email_code, EmailVerifyType.change)
if not checked:
raise HTTPException(detail="邮箱验证码错误", status_code=303)
if token_data.openid != req.openid:
raise HTTPException(detail="无权限的操作", status_code=303)
UserCrud.change_user_info(db, token_data.openid, UserSchemas.UserInfoChange(**req.dict(), registered=True))
token = ''
if not token_data.registered:
token = create_token({'openid': token_data.openid, 'registered': True})
return {'msg': "修改成功", 'state': 1, 'data': {'token': token}}
@router.post("/get_email_verify_code", summary="获取邮箱验证码")
def get_email_verify_code(body: UserSchemas.EmailSendReqBody):
email = body.email
EmailVerifyCode.send_change_code(email)
return {"msg": "验证码已发送至邮箱,请查看", "state": 1}