auth_user.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from exceptions import AuthException
  4. import urllib
  5. import hashlib
  6. from fastapi import Depends, Request
  7. from .security import valid_access_token
  8. from .enc import mpfun
  9. from extensions import *
  10. from database import get_db
  11. from sqlalchemy.orm import Session
  12. from utils.ry_system_util import user_id_get_user_info
  13. class AuthUser:
  14. user_id: int
  15. user_name: str
  16. nick_name: str
  17. is_yzy_user: int
  18. def data_auth_sign(data):
  19. sorted(data.items(),key=lambda item:item[0],reverse=True)
  20. res = urllib.parse.urlencode(data)
  21. sha = hashlib.sha1(res.encode('utf-8'))
  22. encrypts = sha.hexdigest()
  23. return encrypts
  24. def get_auth_user(request: Request):
  25. try:
  26. auth = request.session.get('user_auth')
  27. if auth is not None:
  28. user_auth_sign = request.session['user_auth_sign']
  29. if user_auth_sign == data_auth_sign(auth):
  30. authUser = AuthUser()
  31. authUser.user_id = auth['user_id']
  32. authUser.user_name = auth['user_name']
  33. authUser.nick_name = auth['nick_name']
  34. authUser.is_yzy_user = int(auth['is_yzy_user'])
  35. return authUser
  36. except Exception as e:
  37. raise AuthException(str(e))
  38. return None
  39. def find_auth_user(user_id: int = Depends(valid_access_token), db: Session = Depends(get_db)):
  40. try:
  41. user_info = user_id_get_user_info(db, user_id)
  42. if user_info is not None:
  43. authUser = AuthUser()
  44. authUser.user_id = str(user_info.user_id)
  45. authUser.user_name = mpfun.dec_data(user_info.user_name)
  46. authUser.nick_name = user_info.nick_name
  47. authUser.is_yzy_user = 0
  48. return authUser
  49. except Exception as e:
  50. raise AuthException(str(e))
  51. return None