ApplicationController.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD019
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2020/3/18 9:38
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: AppSetController.py
  12. @Contact: pzb3076@163.com
  13. """
  14. import requests
  15. from Ansjer.config import SERVER_TYPE
  16. from Model.models import ApplicationModel
  17. from django.views.generic.base import View
  18. from Object.RedisObject import RedisObject
  19. from Object.TokenObject import TokenObject
  20. from Service.ModelService import ModelService
  21. from Service.CommonService import CommonService
  22. from django.http import JsonResponse
  23. from django.contrib import auth
  24. import time,json
  25. from Object.ResponseObject import ResponseObject
  26. # http://192.168.136.39:8000/login/oauth/authorize
  27. class ApplicationView(View):
  28. def get(self, request, *args, **kwargs):
  29. request.encoding = 'utf-8'
  30. operation = kwargs.get('operation', None)
  31. return self.validation(request.GET, operation)
  32. def post(self, request, *args, **kwargs):
  33. request.encoding = 'utf-8'
  34. operation = kwargs.get('operation', None)
  35. return self.validation(request.POST, operation)
  36. def validation(self, request_dict, operation):
  37. response = ResponseObject()
  38. token = request_dict.get('token', None)
  39. tko = TokenObject(token)
  40. if tko.code != 0:
  41. userID = tko.userID
  42. if operation == 'authorize':
  43. return self.do_authorize(request_dict, userID, response)
  44. elif operation == 'access_token':
  45. return self.do_token(request_dict, userID, response)
  46. elif operation == 'user':
  47. return self.do_user(request_dict, userID, response)
  48. else:
  49. return response.json(tko.code)
  50. else:
  51. return response.json(414)
  52. def do_authorize(self,request_dict, userID, response):
  53. state = request_dict.get("state", '')
  54. client_id = request_dict.get("client_id", '')
  55. response_type = request_dict.get("response_type", '')
  56. scope = request_dict.get("scope", '')
  57. redirect_uri = request_dict.get("redirect_uri", '')
  58. code = CommonService.encrypt_data(32)
  59. print(redirect_uri)
  60. redirect_uri = redirect_uri + '?code=' + code + '&state=' + state
  61. return response.json(0, res=redirect_uri)
  62. # 增加对code和client_id的校验代码,返回access_token和refresh_token
  63. def do_token(self,request_dict, userID, response):
  64. code = request_dict.get("code", None)
  65. client_id = request_dict.get("client_id", None)
  66. refresh_token = request_dict.get("refresh_token", None)
  67. print('refresh_token:')
  68. print(refresh_token)
  69. print('code:')
  70. print(code)
  71. print('client_id:')
  72. print(client_id)
  73. access_token = CommonService.encrypt_data(randomlength=32)
  74. refresh_token = CommonService.encrypt_data(randomlength=32)
  75. res_json = {
  76. "access_token": access_token,
  77. "token_type": "bearer",
  78. "expires_in": 3600,
  79. "refresh_token": refresh_token
  80. }
  81. print(res_json)
  82. return JsonResponse(res_json)
  83. def do_user(self, request_dict, userID, response):
  84. code = request_dict.get("code", None)
  85. client_id = request_dict.get("client_id", None)
  86. refresh_token = request_dict.get("refresh_token", None)
  87. print('refresh_token:')
  88. print(refresh_token)
  89. print('code:')
  90. print(code)
  91. print('client_id:')
  92. print(client_id)
  93. access_token = CommonService.encrypt_data(randomlength=32)
  94. refresh_token = CommonService.encrypt_data(randomlength=32)
  95. res_json ={
  96. "login": "pengzhibo168",
  97. "id": 1,
  98. "node_id": "MDQ6VXNlcjE=",
  99. "gravatar_id": "",
  100. "type": "User",
  101. "name": "monalisa octocat",
  102. "company": "asdfda",
  103. "location": "San Francisco",
  104. "email": "sadf@sadf.com",
  105. "bio": "There once was...",
  106. "public_repos": 2,
  107. "public_gists": 1,
  108. "followers": 20,
  109. "following": 0,
  110. "created_at": "2008-01-14T04:33:35Z",
  111. "updated_at": "2008-01-14T04:33:35Z"
  112. }
  113. print(res_json)
  114. return JsonResponse(res_json)