permissions.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # coding:utf-8
  2. from rest_framework.permissions import BasePermission
  3. from apps.Equipment.models import Device
  4. from .db_utils import MySQLTool
  5. class RegisterViewPermission(BasePermission):
  6. def has_permission(self, request, view):
  7. try:
  8. user = request.user
  9. if user['username'] == "管理员":
  10. return True
  11. else:
  12. return False
  13. except:
  14. return False
  15. class ModulePermission(BasePermission):
  16. def has_permission(self, request, view):
  17. try:
  18. user = request.user
  19. user_modules = user.get("user_modules")
  20. path = request.path
  21. if path.startswith("/equipment") and user_modules == "1":
  22. return True
  23. else:
  24. return False
  25. except:
  26. return False
  27. class DeviceDetailPermission(BasePermission):
  28. def has_permission(self, request, view):
  29. try:
  30. user = request.user
  31. uid = user.get("uid")
  32. user_modules = user.get("user_modules")
  33. deviceId = request.data.get("device_id")
  34. device = Device.objects.filter(device_id=deviceId, owner_id=int(uid))
  35. if user_modules == "1" and device.exists():
  36. return True
  37. else:
  38. return False
  39. except:
  40. return False
  41. def get_bigdata_user_uid(token):
  42. sql = f'''select uid from sa_device_user where api_token={token}'''
  43. m = MySQLTool()
  44. result = m.execute_by_one(sql)
  45. uid = result['uid']
  46. return uid
  47. class AccessPermission(BasePermission):
  48. def has_permission(self, request, view):
  49. try:
  50. auth = request.MATE['HTTP_AUTHORIZATION']
  51. temp_list = auth.split()
  52. if temp_list[0] != 'Bearer':
  53. raise Exception()
  54. token = temp_list[1]
  55. try:
  56. uid = request.session['bigdata_uid']
  57. except KeyError as e:
  58. uid = get_bigdata_user_uid(token)
  59. request.session['bigdata_uid'] = uid
  60. request.session.save()
  61. request.bigdata_uid = uid
  62. except Exception as e:
  63. return False
  64. return True