bug修改
This commit is contained in:
parent
b8299dfeed
commit
5c6807cb95
|
@ -14,8 +14,8 @@ def marge_auth_data(auth_data_list):
|
|||
return auth_data_str
|
||||
|
||||
|
||||
def get_user_auth(db: Session, user_id):
|
||||
user = db.query(User).filter_by(openid=user_id).first()
|
||||
def get_user_auth(db: Session, email):
|
||||
user = db.query(User).filter_by(email=email).first()
|
||||
user_auth_data_str = user.auth_data
|
||||
if not user.auth_data:
|
||||
if user.department:
|
||||
|
|
|
@ -10,13 +10,13 @@ import json
|
|||
from Utils.SqlAlchemyUtils import get_db_i
|
||||
|
||||
|
||||
def get_user_info(db: Session, openid: str):
|
||||
user = db.query(User).filter_by(openid=openid).first()
|
||||
def get_user_info(db: Session, email: str):
|
||||
user = db.query(User).filter_by(email=email).first()
|
||||
return user
|
||||
|
||||
|
||||
def get_full_user_info(db: Session, openid: str):
|
||||
user = db.query(User).filter_by(openid=openid).first()
|
||||
def get_full_user_info(db: Session, email: str):
|
||||
user = db.query(User).filter_by(email=email).first()
|
||||
if not user:
|
||||
return None
|
||||
departments = []
|
||||
|
@ -35,29 +35,29 @@ def get_full_user_info(db: Session, openid: str):
|
|||
return user_data
|
||||
|
||||
|
||||
def create_user(db: Session, openid: str):
|
||||
user = User(openid=openid)
|
||||
def create_user(db: Session, email: str):
|
||||
user = User(email=email)
|
||||
db.add(user)
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
return user
|
||||
|
||||
|
||||
def change_user_info(db: Session, openid: str, user_info_change: UserSchemas.UserInfoChange):
|
||||
db.query(User).filter_by(openid=openid).update(user_info_change.dict())
|
||||
def change_user_info(db: Session, email: str, user_info_change: UserSchemas.UserInfoChange):
|
||||
db.query(User).filter_by(email=email).update(user_info_change.dict())
|
||||
db.commit()
|
||||
return db.query(User).filter_by(openid=openid).first()
|
||||
return db.query(User).filter_by(email=email).first()
|
||||
|
||||
|
||||
# 根据email从用户信息表内配置用户数据,相当于用户接入后的数据库操作
|
||||
def update_user_info_from_email(db: Session, openid: str, email: str):
|
||||
def update_user_info_from_email(db: Session, email: str):
|
||||
user_info = db.query(UserInfo).filter_by(email=email).first()
|
||||
if user_info:
|
||||
db.query(User).filter_by(openid=openid).update(
|
||||
db.query(User).filter_by(email=email).update(
|
||||
{'email': email, "name": user_info.name, "post": user_info.post,
|
||||
"department": user_info.department, 'registered': True})
|
||||
else:
|
||||
db.query(User).filter_by(openid=openid).update(
|
||||
db.query(User).filter_by(email=email).update(
|
||||
{'email': email, 'registered': True})
|
||||
db.commit()
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ class Daily(Base):
|
|||
id = Column(Integer, primary_key=True, comment="日报ID")
|
||||
type = Column(Enum(DailyTypeEnum, values_callable=lambda x: [e.value for e in x]), nullable=False)
|
||||
# fill_user = Column(String(128), comment="填报人openid")
|
||||
fill_user = Column(String(128), ForeignKey('user.openid'), comment="填报人openid")
|
||||
fill_user = Column(String(128), ForeignKey('user.email'), comment="填报人email")
|
||||
user_info = relationship('User', uselist=False, backref='user')
|
||||
title = Column(String(128), comment="标题")
|
||||
department = Column(Integer, comment="填报部门")
|
||||
|
|
|
@ -6,8 +6,8 @@ from Utils.SqlAlchemyUtils import Base
|
|||
|
||||
class User(Base):
|
||||
__tablename__ = "user"
|
||||
openid = Column(String(255), primary_key=True, comment="用户OpenID")
|
||||
email = Column(String(64), unique=True, index=True, comment="邮箱")
|
||||
# openid = Column(String(255), primary_key=True, comment="用户OpenID")
|
||||
email = Column(String(255), primary_key=True, comment="邮箱")
|
||||
name = Column(String(32), comment="用户名")
|
||||
department = Column(Text, comment="部门")
|
||||
post = Column(Text, comment="职务")
|
||||
|
|
|
@ -32,8 +32,8 @@ def daily_get(req: DailySchemas.DailyGetReq, db: Session = Depends(get_db),
|
|||
@router.post("/daily_add", response_model=DailySchemas.DailyAddRes, summary="添加日报")
|
||||
def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db),
|
||||
token_data: TokenData = Depends(token_data_depend)):
|
||||
if req.fill_user != token_data.openid:
|
||||
raise HTTPException(detail="填报人与id不符", status_code=305)
|
||||
if req.fill_user != token_data.email:
|
||||
raise HTTPException(detail="填报人与email不符", status_code=305)
|
||||
# 本部门填报权限
|
||||
print(token_data.department, token_data, "token_data.departmentxx")
|
||||
if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']):
|
||||
|
|
|
@ -34,7 +34,7 @@ def login_to_app(req: UserSchemas.LoginToAppReq, db: Session = Depends(get_db)):
|
|||
|
||||
@router.post('/get_user_info', summary='获取用户信息', tags=["用户接口"], response_model=UserSchemas.GetUserInfoRes)
|
||||
def get_user_info(token_data: TokenData = Depends(registered_depend), db: Session = Depends(get_db)):
|
||||
user_data = UserCrud.get_full_user_info(db, token_data.openid)
|
||||
user_data = UserCrud.get_full_user_info(db, token_data.email)
|
||||
if not user_data:
|
||||
raise HTTPException(detail="用户未注册", status_code=403)
|
||||
if not user_data['email']:
|
||||
|
@ -52,10 +52,10 @@ def change_user_info_and_email(req: UserSchemas.ChangeUserInfoReq, token_data: T
|
|||
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:
|
||||
if token_data.email != req.email:
|
||||
raise HTTPException(detail="无权限的操作", status_code=303)
|
||||
user = UserCrud.change_user_info(db, token_data.openid, UserSchemas.UserInfoChange(**req.dict(), registered=True))
|
||||
auth_data = AuthCrud.get_user_auth(db, token_data.openid)
|
||||
user = UserCrud.change_user_info(db, token_data.email, UserSchemas.UserInfoChange(**req.dict(), registered=True))
|
||||
auth_data = AuthCrud.get_user_auth(db, token_data.email)
|
||||
user_data = user.to_dict()
|
||||
user_data["auth_data"] = auth_data
|
||||
new_token_data = TokenData(**user_data)
|
||||
|
@ -66,28 +66,28 @@ def change_user_info_and_email(req: UserSchemas.ChangeUserInfoReq, token_data: T
|
|||
@router.post('/change_user_info', tags=["用户接口"], summary='修改用户信息')
|
||||
def change_user_info(req: UserSchemas.ChangeUserInfoReq, token_data: TokenData = Depends(token_data_depend),
|
||||
db: Session = Depends(get_db)):
|
||||
if token_data.openid != req.openid:
|
||||
if token_data.email != req.email:
|
||||
raise HTTPException(detail="无权限的操作", status_code=303)
|
||||
UserCrud.change_user_info(db, token_data.openid, UserSchemas.UserInfoChange(**req.dict()))
|
||||
UserCrud.change_user_info(db, token_data.email, UserSchemas.UserInfoChange(**req.dict()))
|
||||
return {'msg': "修改成功", 'state': 1}
|
||||
|
||||
|
||||
@router.post('/bind_email', tags=["用户接口"], summary='绑定email')
|
||||
@router.post('/bind_email', tags=["用户接口"], summary='邮箱登录')
|
||||
def bind_email(req: UserSchemas.BindEmailReq,
|
||||
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)
|
||||
user = UserCrud.get_user_info(db, req.openid)
|
||||
if user:
|
||||
# 邮箱已绑定
|
||||
if user.email and user.email != req.email:
|
||||
raise HTTPException(detail="该微信已绑定邮箱,请使用该微信号绑定的邮箱登录", status_code=403)
|
||||
user = UserCrud.get_user_info(db, req.email)
|
||||
# if user:
|
||||
# # 邮箱已绑定
|
||||
# if user.email and user.email != req.email:
|
||||
# raise HTTPException(detail="该微信已绑定邮箱,请使用该微信号绑定的邮箱登录", status_code=403)
|
||||
if not user:
|
||||
user = UserCrud.create_user(db, req.openid)
|
||||
user = UserCrud.create_user(db, req.email)
|
||||
if not user.registered:
|
||||
UserCrud.update_user_info_from_email(db, req.openid, req.email)
|
||||
auth_data = AuthCrud.get_user_auth(db, req.openid)
|
||||
UserCrud.update_user_info_from_email(db, req.email)
|
||||
auth_data = AuthCrud.get_user_auth(db, req.email)
|
||||
user_data = user.to_dict()
|
||||
user_data["auth_data"] = auth_data
|
||||
token_data = TokenData(**user_data)
|
||||
|
@ -106,6 +106,17 @@ def get_email_verify_code(body: UserSchemas.EmailSendReqBody):
|
|||
return {"msg": "验证码已发送至邮箱,请查看", "state": 1}
|
||||
|
||||
|
||||
@router.post("/refresh_token", tags=["用户接口"], summary="重新获取token")
|
||||
def refresh_token(token_data: TokenData = Depends(token_data_depend), db: Session = Depends(get_db)):
|
||||
auth_data = AuthCrud.get_user_auth(db, token_data.email)
|
||||
user = UserCrud.get_user_info(db, token_data.email)
|
||||
user_data = user.to_dict()
|
||||
user_data["auth_data"] = auth_data
|
||||
token_data = TokenData(**user_data)
|
||||
token = create_token(token_data)
|
||||
return {'token': token}
|
||||
|
||||
|
||||
department_crud = auto_create_crud(Department, 'department', "部门", auto_create_keys=['id'], tags=["部门职务操作"])
|
||||
post_crud = auto_create_crud(Post, 'post', "职务", auto_create_keys=['id'], tags=["部门职务操作"])
|
||||
department_crud.mount(router)
|
||||
|
|
|
@ -10,7 +10,7 @@ class LoginToAppReq(BaseModel):
|
|||
|
||||
|
||||
class LoginToAppRes(BaseModel):
|
||||
openid: str
|
||||
email: str
|
||||
# registered: bool
|
||||
# token: str
|
||||
|
||||
|
@ -32,7 +32,6 @@ class PostInfo(BaseModel):
|
|||
|
||||
|
||||
class GetUserInfoRes(BaseModel):
|
||||
openid: Optional[str]
|
||||
email: Optional[str]
|
||||
post: Optional[str]
|
||||
post_list: Optional[List[PostInfo]]
|
||||
|
@ -44,25 +43,22 @@ class GetUserInfoRes(BaseModel):
|
|||
|
||||
|
||||
class TokenData(BaseModel):
|
||||
openid: str
|
||||
email: str
|
||||
registered: bool
|
||||
auth_data: Union[str, None]
|
||||
department: Union[str, None]
|
||||
post: Union[str, None]
|
||||
email: Union[str, None]
|
||||
|
||||
|
||||
class UserInfoChange(BaseModel):
|
||||
openid: str
|
||||
email: str
|
||||
name: str
|
||||
post: str
|
||||
department: str
|
||||
registered: bool
|
||||
name: Optional[str]
|
||||
post: Optional[str]
|
||||
department: Optional[str]
|
||||
registered: Optional[bool]
|
||||
|
||||
|
||||
class UserInfo(BaseModel):
|
||||
openid: str
|
||||
email: str
|
||||
name: str
|
||||
post: str
|
||||
|
@ -75,7 +71,6 @@ class ChangeUserInfoReq(UserInfoChange):
|
|||
|
||||
|
||||
class BindEmailReq(BaseModel):
|
||||
openid: str
|
||||
email: str = "xxxx@fecr.com.cn"
|
||||
email_code: str
|
||||
|
||||
|
|
Loading…
Reference in New Issue