|
@@ -0,0 +1,81 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
|
|
|
+@AUTHOR: ASJRD018
|
|
|
+@NAME: AnsjerFormal
|
|
|
+@software: PyCharm
|
|
|
+@DATE: 2019/3/4 16:30
|
|
|
+@Version: python3.6
|
|
|
+@MODIFY DECORD:ansjer dev
|
|
|
+@file: DeviceShare.py
|
|
|
+@Contact: chanjunkai@163.com
|
|
|
+"""
|
|
|
+
|
|
|
+from django.views.generic.base import View
|
|
|
+
|
|
|
+from Model.models import Device_Info
|
|
|
+from Object.RedisObject import RedisObject
|
|
|
+from Object.ResponseObject import ResponseObject
|
|
|
+from Object.TokenObject import TokenObject
|
|
|
+import time
|
|
|
+from Ansjer.config import SERVER_DOMAIN
|
|
|
+import jwt
|
|
|
+
|
|
|
+
|
|
|
+class DeviceShareView(View):
|
|
|
+
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.GET, operation)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.POST, operation)
|
|
|
+
|
|
|
+ def validation(self, request_dict, operation):
|
|
|
+ response = ResponseObject()
|
|
|
+ token = request_dict.get('token', None)
|
|
|
+ if token:
|
|
|
+ tko = TokenObject(token)
|
|
|
+ if tko.code == 0:
|
|
|
+ if operation == 'generateTokenUrl':
|
|
|
+ return self.do_generate_token_url(tko.userID, request_dict, response)
|
|
|
+ else:
|
|
|
+ return response.json(414)
|
|
|
+ else:
|
|
|
+ return response.json(tko.code)
|
|
|
+ else:
|
|
|
+ return response.json(444, {'param': 'token'})
|
|
|
+
|
|
|
+ def do_generate_token_url(self, userID, request_dict, response):
|
|
|
+ UID = request_dict.get('UID', None)
|
|
|
+ dvqs = Device_Info.objects.filter(UID=UID, userID_id=userID, isShare=False)
|
|
|
+ if dvqs.exists():
|
|
|
+ data = {'sharer': userID, 'UID': UID}
|
|
|
+ share_token = jwt.encode(data, 'jwt.#^^&', algorithm='HS256')
|
|
|
+ share_url = '{SERVER_DOMAIN}deviceShare/confirm?shareToken={shareToken}' \
|
|
|
+ .format(SERVER_DOMAIN=SERVER_DOMAIN, shareToken=share_token.decode('utf-8'))
|
|
|
+ return response.json(0, {'share_url': share_url})
|
|
|
+ else:
|
|
|
+ return response.json(173)
|
|
|
+
|
|
|
+ def do_confirm(self, userID, request_dict, response):
|
|
|
+ shareToken = request_dict.get('shareToken', None)
|
|
|
+ if shareToken is not None:
|
|
|
+ data = jwt.decode(shareToken, 'jwt.#^^&', algorithms='HS256')
|
|
|
+ sharer = data.get('sharer', None)
|
|
|
+ UID = data.get('UID', None)
|
|
|
+ dval = Device_Info.objects.filter(userID_id=userID, UID=UID)
|
|
|
+ if not dval.exists():
|
|
|
+ sharerDvqs = Device_Info.objects.filter(userID_id=sharer, UID=UID)
|
|
|
+ if sharerDvqs.exists():
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ return response.json(173)
|
|
|
+ else:
|
|
|
+ return response.json(174)
|
|
|
+ else:
|
|
|
+ return response.json(444, {'param': 'shareToken'})
|