|
@@ -32,7 +32,8 @@ from ratelimit.decorators import ratelimit
|
|
|
from Ansjer.config import AuthCode_Expire, SERVER_DOMAIN, APNS_CONFIG, JPUSH_CONFIG, FCM_CONFIG, TUTK_PUSH_DOMAIN
|
|
|
from Controller.CheckUserData import DataValid, date_handler, RandomStr
|
|
|
from Model.models import Device_User, Role, UidPushModel, UserOauth2Model, UserExModel, Device_Info, UidSetModel, \
|
|
|
- UserAppFrequencyModel, CountryIPModel, CountryModel, UidChannelSetModel, Order_Model, UID_Bucket, Unused_Uid_Meal
|
|
|
+ UserAppFrequencyModel, CountryIPModel, CountryModel, UidChannelSetModel, Order_Model, UID_Bucket, Unused_Uid_Meal, \
|
|
|
+ GatewayPush
|
|
|
from Object.AWS.SesClassObject import SesClassObject
|
|
|
from Object.AliSmsObject import AliSmsObject
|
|
|
from Object.RedisObject import RedisObject
|
|
@@ -310,24 +311,19 @@ class LogoutView(TemplateView):
|
|
|
response = ResponseObject()
|
|
|
token = request_dict.get('token')
|
|
|
tko = TokenObject(token)
|
|
|
- if tko.code == 0:
|
|
|
- Device_User.objects.filter(userID=tko.userID).update(online=False)
|
|
|
-
|
|
|
- redisObj = RedisObject(db=3)
|
|
|
- redisObj.del_data(key=tko.userID)
|
|
|
- m_code = request_dict.get('m_code', None)
|
|
|
- if m_code:
|
|
|
- userID = tko.userID
|
|
|
- try:
|
|
|
- UidPushModel.objects.filter(userID_id=userID, m_code=m_code).delete()
|
|
|
- except Exception as e:
|
|
|
- pass
|
|
|
- else:
|
|
|
- pass
|
|
|
- return response.json(0)
|
|
|
- else:
|
|
|
+ if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
|
|
|
+ Device_User.objects.filter(userID=tko.userID).update(online=False)
|
|
|
+ redisObj = RedisObject(db=3)
|
|
|
+ redisObj.del_data(key=tko.userID)
|
|
|
+ m_code = request_dict.get('m_code', None)
|
|
|
+ if m_code:
|
|
|
+ userID = tko.userID
|
|
|
+ UidPushModel.objects.filter(userID_id=userID, m_code=m_code).delete()
|
|
|
+ GatewayPush.objects.filter(user_id=userID, m_code=m_code).update(logout=True)
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
|
|
|
# 修改密码
|
|
|
class ChangePwdView(TemplateView):
|
|
@@ -1975,28 +1971,28 @@ class v3LoginView(TemplateView):
|
|
|
else:
|
|
|
data_valid = DataValid()
|
|
|
if data_valid.email_validate(username):
|
|
|
- return self.do_email_login(username, password, response, subscribe, number)
|
|
|
+ return self.do_email_login(username, password, response, subscribe, number, request_dict)
|
|
|
elif data_valid.mobile_validate(username):
|
|
|
- return self.do_phone_login(username, password, response, subscribe, number)
|
|
|
+ return self.do_phone_login(username, password, response, subscribe, number, request_dict)
|
|
|
elif data_valid.name_validate(username):
|
|
|
- return self.do_name_login(username, password, response, subscribe, number)
|
|
|
+ return self.do_name_login(username, password, response, subscribe, number, request_dict)
|
|
|
else:
|
|
|
return response.json(107)
|
|
|
|
|
|
- def do_email_login(self, email, password, response, subscribe, number):
|
|
|
+ def do_email_login(self, email, password, response, subscribe, number, request_dict):
|
|
|
user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
|
|
|
- return self.valid_login(user_qs, password, response, subscribe, number)
|
|
|
+ return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
|
|
|
|
|
|
- def do_phone_login(self, phone, password, response, subscribe, number):
|
|
|
+ def do_phone_login(self, phone, password, response, subscribe, number, request_dict):
|
|
|
user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone), is_active=True, user_isValid=True)
|
|
|
- return self.valid_login(user_qs, password, response, subscribe, number)
|
|
|
+ return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
|
|
|
|
|
|
- def do_name_login(self, username, password, response, subscribe, number):
|
|
|
+ def do_name_login(self, username, password, response, subscribe, number, request_dict):
|
|
|
user_qs = Device_User.objects.filter(Q(username=username) | Q(phone=username) | Q(userEmail=username),
|
|
|
is_active=True, user_isValid=True)
|
|
|
- return self.valid_login(user_qs, password, response, subscribe, number)
|
|
|
+ return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
|
|
|
|
|
|
- def valid_login(self, user_qs, password, response, subscribe, number):
|
|
|
+ def valid_login(self, user_qs, password, response, subscribe, number, request_dict):
|
|
|
if not user_qs.exists():
|
|
|
return response.json(104)
|
|
|
# users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
|
|
@@ -2008,6 +2004,7 @@ class v3LoginView(TemplateView):
|
|
|
'phone', 'password', 'userIconPath', 'fingerprint_enable', 'fingerprint_key', 'subscribe_email')[0]
|
|
|
if not check_password(password, users['password']):
|
|
|
return response.json(111)
|
|
|
+
|
|
|
userID = users['userID']
|
|
|
tko = TokenObject()
|
|
|
res = tko.generate(
|
|
@@ -2017,36 +2014,47 @@ class v3LoginView(TemplateView):
|
|
|
if oauth_qs.exists():
|
|
|
auth_type = oauth_qs[0].authType
|
|
|
|
|
|
+ if tko.code != 0:
|
|
|
+ return response.json(tko.code)
|
|
|
|
|
|
- if tko.code == 0:
|
|
|
- now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
|
- if not number:
|
|
|
- user_qs.update(last_login=now_time, language=response.lang)
|
|
|
- else:
|
|
|
- user_qs.update(last_login=now_time, language=response.lang, region_country=number)
|
|
|
+ # 网关推送新增内容
|
|
|
+ app_bundle_id = request_dict.get('appBundleId', None)
|
|
|
+ app_type = request_dict.get('appType', None)
|
|
|
+ push_type = request_dict.get('pushType', None)
|
|
|
+ token_val = request_dict.get('tokenVal', None)
|
|
|
+ m_code = request_dict.get('mCode', None)
|
|
|
+ lang = request_dict.get('language', 'en')
|
|
|
+ tz = request_dict.get('tz', None)
|
|
|
+ if all([app_bundle_id, app_type, push_type, token_val, m_code, tz]):
|
|
|
+ gateway_push_qs = GatewayPush.objects.filter(user_id=userID, m_code=m_code)
|
|
|
+ if not gateway_push_qs.exists():
|
|
|
+ GatewayPush.objects.create(user_id=userID, app_bundle_id=app_bundle_id, app_type=app_type,
|
|
|
+ push_type=push_type, token_val=token_val, m_code=m_code, lang=lang, tz=tz)
|
|
|
|
|
|
- res['rid'] = users['role__rid']
|
|
|
- res['roleName'] = users['role__roleName']
|
|
|
- res['permList'] = ModelService.own_permission(userID)
|
|
|
- res['userID'] = userID
|
|
|
- # 昵称,邮箱,电话,刷新,头像
|
|
|
- userIconPath = str(users['userIconPath'])
|
|
|
- if userIconPath and userIconPath.find('static/') != -1:
|
|
|
- userIconPath = userIconPath.replace('static/', '').replace('\\', '/')
|
|
|
- res['userIconUrl'] = SERVER_DOMAIN + 'account/getAvatar/' + userIconPath
|
|
|
- else:
|
|
|
- res['userIconUrl'] = ''
|
|
|
- res['NickName'] = users['NickName'] if users['NickName'] is not None else ''
|
|
|
- res['username'] = users['username'] if users['username'] is not None else ''
|
|
|
- res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
|
|
|
- res['phone'] = users['phone'] if users['phone'] is not None else ''
|
|
|
- # res['fingerprint_enable'] = users['fingerprint_enable']
|
|
|
- # res['fingerprint_key'] = CommonService.encode_data(content=users['fingerprint_key'], start=2)
|
|
|
- res['authType'] = auth_type
|
|
|
- res['subscribe_email'] = users['subscribe_email'] if users['subscribe_email'] is not None else ''
|
|
|
- return response.json(0, res)
|
|
|
+ now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
|
+ if not number:
|
|
|
+ user_qs.update(last_login=now_time, language=response.lang)
|
|
|
else:
|
|
|
- return response.json(tko.code)
|
|
|
+ user_qs.update(last_login=now_time, language=response.lang, region_country=number)
|
|
|
+
|
|
|
+ res['rid'] = users['role__rid']
|
|
|
+ res['roleName'] = users['role__roleName']
|
|
|
+ res['permList'] = ModelService.own_permission(userID)
|
|
|
+ res['userID'] = userID
|
|
|
+ # 昵称,邮箱,电话,刷新,头像
|
|
|
+ userIconPath = str(users['userIconPath'])
|
|
|
+ if userIconPath and userIconPath.find('static/') != -1:
|
|
|
+ userIconPath = userIconPath.replace('static/', '').replace('\\', '/')
|
|
|
+ res['userIconUrl'] = SERVER_DOMAIN + 'account/getAvatar/' + userIconPath
|
|
|
+ else:
|
|
|
+ res['userIconUrl'] = ''
|
|
|
+ res['NickName'] = users['NickName'] if users['NickName'] is not None else ''
|
|
|
+ res['username'] = users['username'] if users['username'] is not None else ''
|
|
|
+ res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
|
|
|
+ res['phone'] = users['phone'] if users['phone'] is not None else ''
|
|
|
+ res['authType'] = auth_type
|
|
|
+ res['subscribe_email'] = users['subscribe_email'] if users['subscribe_email'] is not None else ''
|
|
|
+ return response.json(0, res)
|
|
|
|
|
|
|
|
|
# 一键登录接口
|