|
@@ -3,6 +3,8 @@ import datetime
|
|
|
import jwt
|
|
|
import time
|
|
|
import requests
|
|
|
+
|
|
|
+from Model.models import TokenRecord
|
|
|
from Object.RedisObject import RedisObject
|
|
|
from Ansjer.config import OAUTH_ACCESS_TOKEN_SECRET, OAUTH_REFRESH_TOKEN_SECRET, OAUTH_ACCESS_TOKEN_TIME, \
|
|
|
OAUTH_REFRESH_TOKEN_TIME, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, DETECT_PUSH_DOMAINS, LOGGER
|
|
@@ -44,13 +46,16 @@ class TokenObject:
|
|
|
|
|
|
except jwt.ExpiredSignatureError as e:
|
|
|
self.code = 309
|
|
|
+ self.update_token(repr(e))
|
|
|
return
|
|
|
except Exception as e:
|
|
|
self.code = 309
|
|
|
+ self.update_token(repr(e))
|
|
|
return
|
|
|
else:
|
|
|
if not self.userID:
|
|
|
self.code = 309
|
|
|
+ self.update_token('缺少用户ID')
|
|
|
return
|
|
|
else:
|
|
|
if self.userID:
|
|
@@ -64,6 +69,7 @@ class TokenObject:
|
|
|
return res
|
|
|
if self.token != redis_token:
|
|
|
self.code = 310
|
|
|
+ self.update_token('重复登录')
|
|
|
return
|
|
|
self.code = 0
|
|
|
return res
|
|
@@ -71,7 +77,7 @@ class TokenObject:
|
|
|
self.code = 309
|
|
|
return
|
|
|
|
|
|
- def generate(self, data=None):
|
|
|
+ def generate(self, old_refresh_token=None, data=None):
|
|
|
if data is None:
|
|
|
data = {}
|
|
|
try:
|
|
@@ -122,8 +128,20 @@ class TokenObject:
|
|
|
result = requests.post(push_url, data={'push_token': data['tokenVal'], 'user_id': data['userID'],
|
|
|
'app_bundle_id': app_bundle_id})
|
|
|
LOGGER.info('{}登出推送结果:{}'.format(data['userID'], result.json()))
|
|
|
+ now_time = int(time.time())
|
|
|
+ if old_refresh_token:
|
|
|
+ token_qs = TokenRecord.objects.filter(refresh_token=old_refresh_token)
|
|
|
+ if token_qs.exists():
|
|
|
+ token_qs.update(refresh_token=refresh_token, access_token=access_token, update_time=now_time)
|
|
|
+ else:
|
|
|
+ TokenRecord.objects.create(access_token=access_token, refresh_token=refresh_token, data=data,
|
|
|
+ created_time=now_time, updated_time=now_time)
|
|
|
+ else:
|
|
|
+ TokenRecord.objects.create(access_token=access_token, refresh_token=refresh_token, data=data,
|
|
|
+ created_time=now_time, updated_time=now_time)
|
|
|
except Exception as e:
|
|
|
self.code = 309
|
|
|
+ self.update_token(repr(e))
|
|
|
print(repr(e))
|
|
|
else:
|
|
|
self.code = 0
|
|
@@ -162,12 +180,18 @@ class TokenObject:
|
|
|
print('过期')
|
|
|
print(repr(e))
|
|
|
self.code = 309
|
|
|
+ self.update_token(repr(e))
|
|
|
except Exception as e:
|
|
|
self.code = 309
|
|
|
+ self.update_token(repr(e))
|
|
|
print(repr(e))
|
|
|
else:
|
|
|
self.userID = res.get('userID', None)
|
|
|
self.user = res.get('user', '')
|
|
|
self.lang = res.get('lang', None)
|
|
|
- refreshRes = self.generate(data=res)
|
|
|
+ refreshRes = self.generate(self.token, data=res)
|
|
|
return refreshRes
|
|
|
+
|
|
|
+ def update_token(self, e):
|
|
|
+ TokenRecord.objects.filter(access_token=self.token).update(code=self.code, error_info=e,
|
|
|
+ updated_time=int(time.time()))
|