Commit f0623f78 authored by xianyang's avatar xianyang

修改个人信息接口

parent 700fd03a
...@@ -78,3 +78,21 @@ def delete_user(db: Session, user_id: int): ...@@ -78,3 +78,21 @@ def delete_user(db: Session, user_id: int):
db.query(models.User).filter(models.User.id == user_id).delete() db.query(models.User).filter(models.User.id == user_id).delete()
db.commit() 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): ...@@ -46,3 +46,10 @@ class UserList(BaseModel):
page: Optional[int] = None page: Optional[int] = None
size: Optional[int] = None size: Optional[int] = None
username: Optional[str] = "" username: Optional[str] = ""
class UserUpdate(BaseModel):
username: str
old_pwd: str
new_pwd: str
confirm_pwd: str
import pyotp import pyotp
from typing import List from typing import List
from fastapi import Depends, APIRouter from fastapi import Depends, APIRouter, Request
from datetime import timedelta from datetime import timedelta
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app import get_db from app import get_db
from app.api.statement.guild import query_token
from app.api.users import crud, schemas 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.login_verification import authenticate_user, create_access_token, get_user, authenticate_pwd
from app.api.users.schemas import UserLoginForm, GoogleCode, GoogleLogin from app.api.users.schemas import UserLoginForm, GoogleCode, GoogleLogin
...@@ -55,6 +56,8 @@ def google_login(data: GoogleLogin, db: Session = Depends(get_db)): ...@@ -55,6 +56,8 @@ def google_login(data: GoogleLogin, db: Session = Depends(get_db)):
@router.get("/tokenUser") @router.get("/tokenUser")
def token_user(token=Depends(auth_token), db: Session = Depends(get_db)): def token_user(token=Depends(auth_token), db: Session = Depends(get_db)):
"""通过token,获取登录用户信息""" """通过token,获取登录用户信息"""
if not token:
return HttpResultResponse(code=401, msg="登录已过期")
user_data = get_current_user(db=db, token=token) user_data = get_current_user(db=db, token=token)
return HttpResultResponse(code=200, data=user_data) return HttpResultResponse(code=200, data=user_data)
...@@ -90,3 +93,14 @@ def delete_user(user_id: int, db: Session = Depends(get_db)): ...@@ -90,3 +93,14 @@ def delete_user(user_id: int, db: Session = Depends(get_db)):
"""用户删除""" """用户删除"""
crud.delete_user(db, user_id) crud.delete_user(db, user_id)
return HttpResultResponse() 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 datetime
import json
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from fastapi import Depends, HTTPException, status from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer from fastapi.security import OAuth2PasswordBearer
...@@ -26,7 +28,8 @@ def auth_token(token: str = Depends(oauth2_scheme)): ...@@ -26,7 +28,8 @@ def auth_token(token: str = Depends(oauth2_scheme)):
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='token过期') raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='token过期')
return token return token
except JWTError as e: 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)): 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)): ...@@ -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) role_info = get_id_to_authority(db, user_info.role_id)
auth_list = role_info.authority.split(',') auth_list = role_info.authority.split(',')
json_data = { json_data = {
"user_id": user_data.id,
"username": user_data.username, "username": user_data.username,
"authority": [int(i) for i in auth_list], "authority": [int(i) for i in auth_list],
"type": 0 if '0' in auth_list else 1 "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