OauthManage.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/7/20 11:13
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: OauthManage.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. from django.views.generic.base import View
  15. from django.utils.decorators import method_decorator
  16. from django.views.decorators.csrf import csrf_exempt
  17. # from Ansjer.settings import *
  18. from Service.TokenManager import *
  19. from django.contrib import auth
  20. from django.http import HttpResponseRedirect
  21. '''
  22. http://192.168.136.40:8077/Test
  23. '''
  24. import json
  25. from Service.ResponseService import *
  26. import requests
  27. from Service.ModelService import ModelService
  28. from django.middleware.csrf import get_token
  29. from django.http import JsonResponse
  30. class OauthManage(View):
  31. @method_decorator(csrf_exempt)
  32. def dispatch(self, *args, **kwargs):
  33. return super(OauthManage, self).dispatch(*args, **kwargs)
  34. # 查询
  35. def get(self, request, *args, **kwargs):
  36. return
  37. # 增加
  38. def post(self, request, *args, **kwargs):
  39. try:
  40. json_data = json.loads(request.body.decode("utf-8"))
  41. except Exception as e:
  42. print(repr(e))
  43. return ResponseJSON(10,repr(e))
  44. else:
  45. access_token = json_data.get('access_token', None)
  46. if access_token is not None:
  47. ser = requests.get(url='http://192.168.136.40:9898/accounts/user/', data={'access_token':access_token})
  48. if ser.status_code == 200:
  49. ser_data = json.loads(ser.content)
  50. print(ser_data)
  51. username = ser_data.get('username', None)
  52. if username is not None:
  53. userValid = Device_User.objects.filter(username=username)
  54. mCode = 1324
  55. userID = userValid[0].userID
  56. authtoken_Obj = AuthToken_Token.objects.filter(tokenID_id=userID)
  57. if authtoken_Obj.exists():
  58. tokenManager = JSONTokenManager()
  59. access_token = tokenManager.deToken(authtoken_Obj[0].access_token)
  60. refresh_token = tokenManager.deToken(authtoken_Obj[0].refresh_token)
  61. else:
  62. access_token = False
  63. refresh_token = False
  64. if access_token is not False and refresh_token is not False:
  65. resultDict = {'result': {'access_token': access_token, 'refresh_token': refresh_token},
  66. 'error_code': 0}
  67. else:
  68. JSON = json.dumps({'userID': userID, 'mCode': mCode}, ensure_ascii=False)
  69. tokenManager = JSONTokenManager()
  70. tokenJSON = tokenManager.generate_AToken(JSON=JSON,
  71. iCode=tokenManager.getSalt(strLen=8))
  72. resultDict = json.loads(tokenJSON)
  73. error_code = resultDict.get('error_code', None)
  74. if error_code != None and error_code == 0:
  75. result = resultDict.get('result', None)
  76. if result != None:
  77. import datetime
  78. now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
  79. userValid.update(last_login=now_time, online=True, machine_code=mCode)
  80. role_dict = ModelService.own_role(userID=userID)
  81. result['rid'] = role_dict['rid']
  82. result['roleName'] = role_dict['roleName']
  83. result['permList'] = ModelService.own_permission(userID)
  84. result['username'] = username
  85. return ResponseJSON(0, result)
  86. # 修改 资源改变
  87. def put(self, request):
  88. return ResponseJSON(404)
  89. # 修改 属性改变
  90. def PATCH(self, request):
  91. return ResponseJSON(404)
  92. # 删除
  93. def delete(self, request):
  94. return ResponseJSON(404)
  95. def validation(self, request_dict, *args, **kwargs):
  96. return ResponseJSON(404)