chenjunkai 5 gadi atpakaļ
vecāks
revīzija
76c0a624e8
4 mainītis faili ar 68 papildinājumiem un 16 dzēšanām
  1. 1 0
      .gitignore
  2. 18 15
      controller/index.py
  3. 3 1
      model/models.py
  4. 46 0
      service/CommonService.py

+ 1 - 0
.gitignore

@@ -5,3 +5,4 @@
 /model/__pycache__
 /model/migrations
 /object/__pycache__
+/service/__pycache__

+ 18 - 15
controller/index.py

@@ -22,6 +22,7 @@ import subprocess
 # from gevent.pool import Pool
 from model.models import UserModel, UidRtspModel
 from object.tkObject import tkObject
+from service.CommonService import CommonService
 
 
 class authView(TemplateView):
@@ -73,7 +74,6 @@ class loginHandleView(TemplateView):
         scope = request_dict.get("scope", '')
         redirect_uri = request_dict.get("redirect_uri", '')
         # 返回code
-        code = user
         print(user)
         print(pwd)
         auth_request_url = 'http://test.dvema.com/oalexa/auth'
@@ -110,7 +110,7 @@ class loginHandleView(TemplateView):
                 }
                 querysetlist.append(UidRtspModel(**create_data))
             UidRtspModel.objects.bulk_create(querysetlist)
-
+            code = CommonService.encrypt_data(32)
             redirect_uri = redirect_uri + '?code=' + code + '&state=' + state
             return response.json(0, res=redirect_uri)
         else:
@@ -132,8 +132,6 @@ class oa2TokenView(TemplateView):
 
     def validate(self, request_dict):
         # 增加对code和client_id的校验代码,返回access_token和refresh_token
-        from var_dump import var_dump
-        var_dump(request_dict)
         code = request_dict.get("code", None)
         client_id = request_dict.get("client_id", None)
 
@@ -141,17 +139,22 @@ class oa2TokenView(TemplateView):
         print(code)
         print('client_id:')
         print(client_id)
-        access_token = "aaaaaaaaaaaaaaa"
-        refresh_token = "tGzv3JOkF0XG5Qx2TlKWIA"
-        res_json = {
-            "access_token": access_token,
-            "token_type": "bearer",
-            "expires_in": 3600,
-            "refresh_token": refresh_token
-        }
-        return JsonResponse(res_json)
-        response = ResObject()
-        return response.json(0, res=res_json)
+        user_qs = UserModel.objects.filter(code=code)
+        if user_qs.exists():
+            
+            access_token = CommonService.encrypt_data(randomlength=32)
+            refresh_token = CommonService.encrypt_data(randomlength=32)
+
+            user_qs.update(access_token=access_token, refresh_token=refresh_token)
+            res_json = {
+                "access_token": access_token,
+                "token_type": "bearer",
+                "expires_in": 3600,
+                "refresh_token": refresh_token
+            }
+            return JsonResponse(res_json)
+        else:
+            return JsonResponse({'msg': 'code not exists'})
 
 
 class oa2RtspStartView(TemplateView):

+ 3 - 1
model/models.py

@@ -7,7 +7,9 @@ from django.db import models
 class UserModel(models.Model):
     userID = models.CharField(blank=True, max_length=32, primary_key=True,
                               verbose_name=u'用户ID', unique=True)
-    token = models.CharField(max_length=64, unique=True, default='', verbose_name='令牌')
+    code = models.CharField(max_length=32, unique=True, default='', verbose_name='授权码')
+    access_token = models.CharField(max_length=64, unique=True, default='', verbose_name='访问令牌')
+    refresh_token = models.CharField(max_length=64, unique=True, default='', verbose_name='刷新令牌')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
 

+ 46 - 0
service/CommonService.py

@@ -0,0 +1,46 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: azoauth
+@software: PyCharm
+@DATE: 2020/1/14 16:45
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: CommonService.py
+@Contact: chanjunkai@163.com
+"""
+# -*- coding: utf-8 -*-
+import datetime
+import time
+from pathlib import Path
+from random import Random
+import ipdb
+import simplejson as json
+from django.core import serializers
+from django.utils import timezone
+from pyipip import IPIPDatabase
+
+
+# 复用性且公用较高封装代码在这
+class CommonService:
+    # 生成随机数
+    @staticmethod
+    def encrypt_data(randomlength=8, number=False):
+        str = ''
+        if number == False:
+            characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsT' \
+                           'tUuVvWwXxYyZz0123456789'
+        else:
+            characterSet = '0123456789'
+
+        length = len(characterSet) - 1
+
+        random = Random()
+        for index in range(randomlength):
+            str += characterSet[random.randint(0, length)]
+        return str
+
+data = CommonService.encrypt_data(20)
+print(data)