#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved. @AUTHOR: ASJRD018 @NAME: Ansjer @software: PyCharm @DATE: 2018/7/20 11:13 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: OauthManage.py @Contact: chanjunkai@163.com """ from django.views.generic.base import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from Service.TokenManager import * from Model.models import oauth_user,Auth_Captcha from django.contrib import auth from django.http import HttpResponseRedirect import json from Service.ResponseService import * import requests from Service.ModelService import ModelService from django.middleware.csrf import get_token from django.http import JsonResponse class OauthManage(View): @method_decorator(csrf_exempt) def dispatch(self, *args, **kwargs): return super(OauthManage, self).dispatch(*args, **kwargs) # 查询 def get(self, request, *args, **kwargs): return # 认证登录 def post(self, request, *args, **kwargs): try: json_data = json.loads(request.body.decode("utf-8")) except Exception as e: print(repr(e)) return ResponseJSON(10,repr(e)) else: access_token = json_data.get('access_token', None) if access_token is not None: try: ser = requests.get(url='http://192.168.136.45:9898/accounts/user/', data={'access_token': access_token}) ser_data = json.loads(ser.content) except Exception as e: print(repr(e)) return ResponseJSON(10,repr(e)) else: oid = ser_data['oid'] if oid is not None: ou = oauth_user.objects.filter(oid=oid) # 用户存在情况查找绑定用户 if ou.exists(): user_qs =ou[0].userID userID = user_qs.userID #用户不存在情况新增一个用户 else: oid = ser_data['oid'] username = ser_data['username'] password = ser_data['password'] email = ser_data['email'] try: CaptchaRecord = Auth_Captcha() CaptchaRecord.authcaptca = '1234' CaptchaRecord.username = username CaptchaRecord.sendtype = 'register' CaptchaRecord.save() except Exception as e: return ResponseJSON(10,repr(e)) try: UserData = Device_User(username=username, userEmail=email, password=password, userID=CommonService.getUserID(μs=False, setOTAID=True), is_active=True, user_isValid=True) UserData.save() except Exception as e: errorInfo = traceback.format_exc() print('Create User Error: %s' % errorInfo) return ResponseJSON(424,'Create User Error:' + repr(e)) else: ourValid = oauth_user.objects.create(oid=oid, userID=UserData) if ourValid: userID = UserData.userID if userID: userValid = Device_User.objects.filter(userID=userID) if userValid.exists(): authtoken_Obj = AuthToken_Token.objects.filter(tokenID_id=userID) if authtoken_Obj.exists(): tokenManager = JSONTokenManager() access_token = tokenManager.deToken(authtoken_Obj[0].access_token) refresh_token = tokenManager.deToken(authtoken_Obj[0].refresh_token) else: access_token = False refresh_token = False if access_token is not False and refresh_token is not False: resultDict = { 'result': {'access_token': access_token, 'refresh_token': refresh_token}, 'error_code': 0} else: JSON = json.dumps({'userID': userID, 'mCode': ''}, ensure_ascii=False) tokenManager = JSONTokenManager() tokenJSON = tokenManager.generate_AToken(JSON=JSON, iCode=tokenManager.getSalt(strLen=8)) resultDict = json.loads(tokenJSON) error_code = resultDict.get('error_code', None) if error_code != None and error_code == 0: result = resultDict.get('result', None) if result != None: import datetime now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc) userValid.update(last_login=now_time, online=True) role_dict = ModelService.own_role(userID=userID) result['rid'] = role_dict['rid'] result['roleName'] = role_dict['roleName'] result['permList'] = ModelService.own_permission(userID) result['username'] = userValid[0].username return ResponseJSON(0, result) return ResponseJSON(10) # 修改 资源改变 def put(self, request): return ResponseJSON(404) # 修改 属性改变 def PATCH(self, request): return ResponseJSON(404) # 删除 def delete(self, request): return ResponseJSON(404) def validation(self, request_dict, *args, **kwargs): return ResponseJSON(404)