auth.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import json
  2. from fastapi import Depends
  3. from fastapi.security import OAuth2PasswordBearer
  4. from app import schemas
  5. from app.utils.utils import decode_base64
  6. from configs.globals import g
  7. reuseable_oauth = OAuth2PasswordBearer(
  8. tokenUrl="/jpt/auth/login",
  9. scheme_name="JWT"
  10. )
  11. async def verify_super_admin(token: str = Depends(reuseable_oauth)) -> schemas.TokenData:
  12. token_data_str = decode_base64(token)
  13. token_data_dict = json.loads(token_data_str)
  14. token_data = schemas.TokenData(**token_data_dict)
  15. if token_data.role_id != 1:
  16. raise Exception("暂无权限")
  17. g.user_id = token_data.user_id
  18. g.user_name = token_data.user_name
  19. g.project_id = token_data.project_id
  20. return token_data
  21. async def verify_special(token: str = Depends(reuseable_oauth)) -> schemas.TokenData:
  22. token_data_str = decode_base64(token)
  23. token_data_dict = json.loads(token_data_str)
  24. token_data = schemas.TokenData(**token_data_dict)
  25. if not token_data.role_id in [1,3]:
  26. raise Exception("暂无权限")
  27. g.user_id = token_data.user_id
  28. g.user_name = token_data.user_name
  29. g.project_id = token_data.project_id
  30. return token_data
  31. async def verify_users(token: str = Depends(reuseable_oauth)) -> schemas.TokenData:
  32. token_data_str = decode_base64(token)
  33. token_data_dict = json.loads(token_data_str)
  34. token_data = schemas.TokenData(**token_data_dict)
  35. g.user_id = token_data.user_id
  36. g.user_name = token_data.user_name
  37. g.project_id = token_data.project_id
  38. return token_data