Commit f0623f78 authored by xianyang's avatar xianyang

修改个人信息接口

parent 700fd03a
......@@ -78,3 +78,21 @@ def delete_user(db: Session, user_id: int):
db.query(models.User).filter(models.User.id == user_id).delete()
db.commit()
def update_user_info(db: Session, param, user_info):
res = {"state": True}
individual_info = db.query(models.User).filter(models.User.id == user_info.get("user_id")).first()
if param.old_pwd != individual_info.hashed_password:
res["state"] = False
res["data"] = "原密码错误!"
return res
if param.new_pwd != param.confirm_pwd:
res["state"] = False
res["data"] = "两次密码不一致!"
return res
db.query(models.User).filter(models.User.id == user_info.get("user_id")).update({models.User.username: param.username,
models.User.hashed_password: param.new_pwd})
db.commit()
return res
......@@ -46,3 +46,10 @@ class UserList(BaseModel):
page: Optional[int] = None
size: Optional[int] = None
username: Optional[str] = ""
class UserUpdate(BaseModel):
username: str
old_pwd: str
new_pwd: str
confirm_pwd: str
import pyotp
from typing import List
from fastapi import Depends, APIRouter
from fastapi import Depends, APIRouter, Request
from datetime import timedelta
from sqlalchemy.orm import Session
from app import get_db
from app.api.statement.guild import query_token
from app.api.users import crud, schemas
from app.api.users.login_verification import authenticate_user, create_access_token, get_user, authenticate_pwd
from app.api.users.schemas import UserLoginForm, GoogleCode, GoogleLogin
......@@ -55,6 +56,8 @@ def google_login(data: GoogleLogin, db: Session = Depends(get_db)):
@router.get("/tokenUser")
def token_user(token=Depends(auth_token), db: Session = Depends(get_db)):
"""通过token,获取登录用户信息"""
if not token:
return HttpResultResponse(code=401, msg="登录已过期")
user_data = get_current_user(db=db, token=token)
return HttpResultResponse(code=200, data=user_data)
......@@ -90,3 +93,14 @@ def delete_user(user_id: int, db: Session = Depends(get_db)):
"""用户删除"""
crud.delete_user(db, user_id)
return HttpResultResponse()
@router.post("/update")
def update_individual_info(param: schemas.UserUpdate, request: Request, db: Session = Depends(get_db)):
"""个人信息修改"""
headers = request.get("headers")
user = query_token(db, headers)
res = crud.update_user_info(db, param, user)
if res.get("state"):
return HttpResultResponse()
return HttpResultResponse(code=500, msg=res.get("data"))
import datetime
import json
from sqlalchemy.orm import Session
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
......@@ -26,7 +28,8 @@ def auth_token(token: str = Depends(oauth2_scheme)):
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='token过期')
return token
except JWTError as e:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=f'{e}')
# raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='登录过期')
return ''
def get_current_user(db: Session, token: str = Depends(oauth2_scheme)):
......@@ -47,6 +50,7 @@ def get_current_user(db: Session, token: str = Depends(oauth2_scheme)):
role_info = get_id_to_authority(db, user_info.role_id)
auth_list = role_info.authority.split(',')
json_data = {
"user_id": user_data.id,
"username": user_data.username,
"authority": [int(i) for i in auth_list],
"type": 0 if '0' in auth_list else 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment