VerifyCodeController.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from django.views import View
  4. from Controller.CheckUserData import DataValid
  5. from Object.RedisObject import RedisObject
  6. from Object.ResponseObject import ResponseObject
  7. from Object.TokenObject import TokenObject
  8. class VerifyCodeView(View):
  9. def get(self, request, *args, **kwargs):
  10. request.encoding = 'utf-8'
  11. operation = kwargs.get('operation', None)
  12. request_dict = request.GET
  13. return self.validate(request_dict, operation)
  14. def post(self, request, *args, **kwargs):
  15. request.encoding = 'utf-8'
  16. operation = kwargs.get('operation', None)
  17. request_dict = request.POST
  18. return self.validate(request_dict, operation)
  19. def validate(self, request_dict, operation):
  20. token = TokenObject(request_dict.get('token', None))
  21. response = ResponseObject()
  22. if token.code != 0:
  23. return response.json(token.code)
  24. if operation == 'forget':
  25. return self.verify_forget(request_dict, response)
  26. elif operation == 'register':
  27. return self.verify_register(request_dict, response)
  28. elif operation == 'image':
  29. return self.verify_image(request_dict, response)
  30. else:
  31. return response.json(404)
  32. def verify_forget(self, request_dict, response):
  33. email = request_dict.get('email', None)
  34. phone = request_dict.get('phone', None)
  35. authcode = request_dict.get('authcode', None)
  36. key = '_forgetPwdResetCode'
  37. if email is not None:
  38. email = email.strip()
  39. return self.email_validate(key, email, authcode, response)
  40. elif phone is not None:
  41. phone = phone.strip()
  42. return self.phone_validate(phone, authcode, response)
  43. else:
  44. return response.json(444)
  45. def verify_register(self, request_dict, response):
  46. email = request_dict.get('email', None)
  47. phone = request_dict.get('phone', None)
  48. authcode = request_dict.get('authcode', None)
  49. key = '_identifyingCode'
  50. if email is not None:
  51. email = email.strip()
  52. return self.email_validate(key, email, authcode, response)
  53. elif phone is not None:
  54. phone = phone.strip()
  55. return self.phone_validate(phone, authcode, response)
  56. else:
  57. return response.json(444)
  58. def verify_image(self, request_dict, response):
  59. imageCodeId = request_dict.get('imageCodeId', None)
  60. authcode = request_dict.get('authcode', None)
  61. if imageCodeId and authcode:
  62. image_code_key = 'image_code_' + imageCodeId
  63. redisObj = RedisObject(db=6)
  64. # redis里面的验证码
  65. redis_image_code = redisObj.get_data(key=image_code_key)
  66. # 验证用户输入的验证码和redis中的验证码
  67. if redis_image_code is False or authcode.lower() != redis_image_code.lower():
  68. return response.json(121)
  69. else:
  70. return response.json(0)
  71. else:
  72. return response.json(444)
  73. def email_validate(self, key, email, authcode, response):
  74. authcode.strip()
  75. data_valid = DataValid()
  76. if data_valid.email_validate(email) is not True:
  77. return response.json(105)
  78. reds = RedisObject()
  79. resetCode = reds.get_data(key=email + key)
  80. if resetCode is False:
  81. return response.json(120)
  82. if authcode != resetCode:
  83. return response.json(121)
  84. return response.json(0)
  85. def phone_validate(self, key, phone, authcode, response):
  86. authcode.strip()
  87. data_valid = DataValid()
  88. if data_valid.mobile_validate(phone) is not True:
  89. return response.json(100)
  90. reds = RedisObject()
  91. resetCode = reds.get_data(key=phone + key)
  92. if resetCode is False:
  93. return response.json(120)
  94. print(resetCode)
  95. if authcode != resetCode:
  96. return response.json(121)
  97. return response.json(0)