|
@@ -351,6 +351,7 @@ class ChangePwdView(TemplateView):
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
new_salt = request_dict.get('newSalt', None)
|
|
|
old_salt = request_dict.get('oldSalt', None)
|
|
|
+ iterations = request_dict.get('iterations', None)
|
|
|
response = ResponseObject()
|
|
|
if oldPwd is None and newPwd is None:
|
|
|
return response.json(800)
|
|
@@ -358,16 +359,16 @@ class ChangePwdView(TemplateView):
|
|
|
response.lang = tko.lang
|
|
|
if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
- return self.updatePwd(tko.userID, oldPwd, newPwd, response, password_version, new_salt, old_salt)
|
|
|
+ return self.updatePwd(tko.userID, oldPwd, newPwd, response, password_version, new_salt, old_salt, iterations)
|
|
|
|
|
|
- def updatePwd(self, userID, oldPwd, newPwd, response, password_version, new_salt, old_salt):
|
|
|
+ def updatePwd(self, userID, oldPwd, newPwd, response, password_version, new_salt, old_salt, iterations):
|
|
|
user_qs = Device_User.objects.filter(userID=userID)
|
|
|
if not user_qs.exists():
|
|
|
return response.json(104)
|
|
|
if password_version == 'V1':
|
|
|
c_p = check_password(oldPwd, user_qs[0].password)
|
|
|
else:
|
|
|
- oldPwd = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, old_salt, oldPwd)
|
|
|
+ oldPwd = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, old_salt, oldPwd)
|
|
|
c_p = CommonService.check_password(oldPwd, user_qs[0].password)
|
|
|
# 密码是否正确
|
|
|
if not c_p:
|
|
@@ -405,6 +406,7 @@ class v3ChangePwdView(TemplateView):
|
|
|
newPwd = request_dict.get('newPwd', None)
|
|
|
new_salt = request_dict.get('newSalt', None)
|
|
|
old_salt = request_dict.get('oldSalt', None)
|
|
|
+ iterations = request_dict.get('iterations', None)
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
response = ResponseObject()
|
|
|
# 解密
|
|
@@ -446,16 +448,16 @@ class v3ChangePwdView(TemplateView):
|
|
|
response.lang = tko.lang
|
|
|
if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
- return self.updatePwd(tko.userID, oldPwd, newPwd, response, password_version, new_salt, old_salt)
|
|
|
+ return self.updatePwd(tko.userID, oldPwd, newPwd, response, password_version, new_salt, old_salt, iterations)
|
|
|
|
|
|
- def updatePwd(self, userID, oldPwd, newPwd, response, password_version, new_salt, old_salt):
|
|
|
+ def updatePwd(self, userID, oldPwd, newPwd, response, password_version, new_salt, old_salt, iterations):
|
|
|
user_qs = Device_User.objects.filter(userID=userID)
|
|
|
if not user_qs.exists():
|
|
|
return response.json(104)
|
|
|
if password_version == 'V1':
|
|
|
c_p = check_password(oldPwd, user_qs[0].password)
|
|
|
else:
|
|
|
- oldPwd = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, old_salt, oldPwd)
|
|
|
+ oldPwd = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, old_salt, oldPwd)
|
|
|
c_p = CommonService.check_password(oldPwd, user_qs[0].password)
|
|
|
# 密码是否正确
|
|
|
if not c_p:
|
|
@@ -484,6 +486,7 @@ class createPwd(TemplateView):
|
|
|
def validation(self, request_dict):
|
|
|
token = request_dict.get('token', None)
|
|
|
password = request_dict.get('password', None)
|
|
|
+ salt = request_dict.get('salt', None)
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
response = ResponseObject()
|
|
|
|
|
@@ -505,6 +508,8 @@ class createPwd(TemplateView):
|
|
|
password = password.decode('utf-8')
|
|
|
password = password[i:-i]
|
|
|
password = make_password(password)
|
|
|
+ else:
|
|
|
+ password = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, salt, password)
|
|
|
update = Device_User.objects.filter(userID=userID).update(password=password)
|
|
|
if update:
|
|
|
return response.json(0)
|
|
@@ -727,6 +732,8 @@ class refreshTokenViewV3(TemplateView):
|
|
|
lang = request_dict.get('lang', None)
|
|
|
language = request_dict.get('language', None)
|
|
|
password = request_dict.get('userPwd', None)
|
|
|
+ salt = request_dict.get('salt', None)
|
|
|
+ iterations = request_dict.get('iterations', None)
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
response = ResponseObject(lang)
|
|
|
if not token:
|
|
@@ -770,6 +777,7 @@ class refreshTokenViewV3(TemplateView):
|
|
|
if not check_password(password, list(user_qs)[0]['password']):
|
|
|
return response.json(111)
|
|
|
else:
|
|
|
+ password = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, salt, password)
|
|
|
if not CommonService.check_password(password, list(user_qs)[0]['password']):
|
|
|
return response.json(111)
|
|
|
now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
@@ -1969,6 +1977,7 @@ class v2LoginView(TemplateView):
|
|
|
username = request_dict.get('userName', None)
|
|
|
password = request_dict.get('userPwd', None)
|
|
|
salt = request_dict.get('salt', None)
|
|
|
+ iterations = request_dict.get('iterations', None)
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
number = request_dict.get('number', None)
|
|
|
if not username or not password:
|
|
@@ -1977,28 +1986,28 @@ class v2LoginView(TemplateView):
|
|
|
password = password.strip()
|
|
|
data_valid = DataValid()
|
|
|
if data_valid.email_validate(username):
|
|
|
- return self.do_email_login(username, password, number, response, password_version, salt)
|
|
|
+ return self.do_email_login(username, password, number, response, password_version, salt, iterations)
|
|
|
elif data_valid.mobile_validate(username):
|
|
|
- return self.do_phone_login(username, password, number, response, password_version, salt)
|
|
|
+ return self.do_phone_login(username, password, number, response, password_version, salt, iterations)
|
|
|
elif data_valid.name_validate(username):
|
|
|
- return self.do_name_login(username, password, number, response, password_version, salt)
|
|
|
+ return self.do_name_login(username, password, number, response, password_version, salt, iterations)
|
|
|
else:
|
|
|
return response.json(107)
|
|
|
|
|
|
- def do_email_login(self, email, password, number, response, password_version, salt):
|
|
|
+ def do_email_login(self, email, password, number, response, password_version, salt, iterations):
|
|
|
user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
|
|
|
- return self.valid_login(user_qs, password, number, response, password_version, salt)
|
|
|
+ return self.valid_login(user_qs, password, number, response, password_version, salt, iterations)
|
|
|
|
|
|
- def do_phone_login(self, phone, password, number, response, password_version, salt):
|
|
|
+ def do_phone_login(self, phone, password, number, response, password_version, salt, iterations):
|
|
|
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, number, response, password_version, salt)
|
|
|
+ return self.valid_login(user_qs, password, number, response, password_version, salt, iterations)
|
|
|
|
|
|
- def do_name_login(self, username, password, number, response, password_version, salt):
|
|
|
+ def do_name_login(self, username, password, number, response, password_version, salt, iterations):
|
|
|
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, number, response, password_version, salt)
|
|
|
+ return self.valid_login(user_qs, password, number, response, password_version, salt, iterations)
|
|
|
|
|
|
- def valid_login(self, user_qs, password, number, response, password_version, salt):
|
|
|
+ def valid_login(self, user_qs, password, number, response, password_version, salt, iterations):
|
|
|
if not user_qs.exists():
|
|
|
return response.json(104)
|
|
|
# users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
|
|
@@ -2008,7 +2017,7 @@ class v2LoginView(TemplateView):
|
|
|
if password_version == 'V1':
|
|
|
check_flag = check_password(password, users['password'])
|
|
|
else:
|
|
|
- password = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, salt, password)
|
|
|
+ password = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, salt, password)
|
|
|
check_flag = CommonService.check_password(password, users['password'])
|
|
|
if not check_flag:
|
|
|
return response.json(111)
|
|
@@ -2162,7 +2171,6 @@ class v3LoginView(TemplateView):
|
|
|
def validates(self, request_dict, response):
|
|
|
username = request_dict.get('userName', None)
|
|
|
password = request_dict.get('userPwd', None)
|
|
|
- salt = request_dict.get('salt', None)
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
subscribe = request_dict.get('subscribe', None)
|
|
|
number = request_dict.get('number', None)
|
|
@@ -2199,29 +2207,31 @@ class v3LoginView(TemplateView):
|
|
|
else:
|
|
|
data_valid = DataValid()
|
|
|
if data_valid.email_validate(username):
|
|
|
- return self.do_email_login(username, password, response, subscribe, number, request_dict, salt)
|
|
|
+ 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, request_dict, salt)
|
|
|
+ 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, request_dict, salt)
|
|
|
+ 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, request_dict, salt):
|
|
|
+ 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, request_dict, salt)
|
|
|
+ return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
|
|
|
|
|
|
- def do_phone_login(self, phone, password, response, subscribe, number, request_dict, salt):
|
|
|
+ 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, request_dict, salt)
|
|
|
+ return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
|
|
|
|
|
|
- def do_name_login(self, username, password, response, subscribe, number, request_dict, salt):
|
|
|
+ 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, request_dict, salt)
|
|
|
+ return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
|
|
|
|
|
|
- def valid_login(self, user_qs, password, response, subscribe, number, request_dict, salt):
|
|
|
+ def valid_login(self, user_qs, password, response, subscribe, number, request_dict):
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
+ salt = request_dict.get('salt', None)
|
|
|
+ iterations = request_dict.get('iterations', None)
|
|
|
if not user_qs.exists():
|
|
|
return response.json(104)
|
|
|
if subscribe:
|
|
@@ -2233,7 +2243,7 @@ class v3LoginView(TemplateView):
|
|
|
if password_version == 'V1':
|
|
|
check_flag = check_password(password, users['password'])
|
|
|
else:
|
|
|
- password = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, salt, password)
|
|
|
+ password = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, salt, password)
|
|
|
check_flag = CommonService.check_password(password, users['password'])
|
|
|
if not check_flag:
|
|
|
return response.json(111)
|
|
@@ -2697,7 +2707,7 @@ class wxAuthSignView(TemplateView):
|
|
|
access_token = res_json['access_token']
|
|
|
openid = res_json['openid']
|
|
|
if access_token and openid:
|
|
|
- info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}'.\
|
|
|
+ info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}'. \
|
|
|
format(access_token=access_token, openid=openid)
|
|
|
res_req = requests.get(url=info_url)
|
|
|
res_req.encoding = res_req.apparent_encoding
|
|
@@ -2838,7 +2848,7 @@ class wxPerfectView(TemplateView):
|
|
|
secret = app_config[appBundleID]['secret']
|
|
|
# 获取access_token请求
|
|
|
at_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={secret}&' \
|
|
|
- 'code={code}&grant_type=authorization_code'.\
|
|
|
+ 'code={code}&grant_type=authorization_code'. \
|
|
|
format(appid=appid, secret=secret, code=grant_code)
|
|
|
res_req = requests.get(url=at_url)
|
|
|
res_json = res_req.json()
|
|
@@ -3288,6 +3298,7 @@ class alexaAuthView(TemplateView):
|
|
|
username = request_dict.get('userName', None)
|
|
|
password = request_dict.get('userPwd', None)
|
|
|
salt = request_dict.get('salt', None)
|
|
|
+ iterations = request_dict.get('iterations', None)
|
|
|
password_version = request_dict.get('pwdVersion', 'V1')
|
|
|
if not username or not password:
|
|
|
return response.json(111)
|
|
@@ -3295,35 +3306,35 @@ class alexaAuthView(TemplateView):
|
|
|
password = password.strip()
|
|
|
data_valid = DataValid()
|
|
|
if data_valid.email_validate(username):
|
|
|
- return self.do_email_login(username, password, response, password_version, salt)
|
|
|
+ return self.do_email_login(username, password, response, password_version, salt, iterations)
|
|
|
elif data_valid.mobile_validate(username):
|
|
|
- return self.do_phone_login(username, password, response, password_version, salt)
|
|
|
+ return self.do_phone_login(username, password, response, password_version, salt, iterations)
|
|
|
elif data_valid.name_validate(username):
|
|
|
- return self.do_name_login(username, password, response, password_version, salt)
|
|
|
+ return self.do_name_login(username, password, response, password_version, salt, iterations)
|
|
|
else:
|
|
|
return response.json(107)
|
|
|
|
|
|
- def do_email_login(self, email, password, response, password_version, salt):
|
|
|
+ def do_email_login(self, email, password, response, password_version, salt, iterations):
|
|
|
user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
|
|
|
- return self.valid_login(user_qs, password, response, password_version, salt)
|
|
|
+ return self.valid_login(user_qs, password, response, password_version, salt, iterations)
|
|
|
|
|
|
- def do_phone_login(self, phone, password, response, password_version, salt):
|
|
|
+ def do_phone_login(self, phone, password, response, password_version, salt, iterations):
|
|
|
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, password_version, salt)
|
|
|
+ return self.valid_login(user_qs, password, response, password_version, salt, iterations)
|
|
|
|
|
|
- def do_name_login(self, username, password, response, password_version, salt):
|
|
|
+ def do_name_login(self, username, password, response, password_version, salt, iterations):
|
|
|
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, password_version, salt)
|
|
|
+ return self.valid_login(user_qs, password, response, password_version, salt, iterations)
|
|
|
|
|
|
- def valid_login(self, user_qs, password, response, password_version, salt):
|
|
|
+ def valid_login(self, user_qs, password, response, password_version, salt, iterations):
|
|
|
if not user_qs.exists():
|
|
|
return response.json(104)
|
|
|
users = user_qs.values('userID', 'password', 'region_country')[0]
|
|
|
if password_version == 'V1':
|
|
|
check_flag = check_password(password, users['password'])
|
|
|
else:
|
|
|
- password = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, salt, password)
|
|
|
+ password = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, salt, password)
|
|
|
check_flag = CommonService.check_password(password, users['password'])
|
|
|
if not check_flag:
|
|
|
return response.json(111)
|
|
@@ -4478,6 +4489,7 @@ def deleteAccount(request):
|
|
|
token = request.POST.get('token', None)
|
|
|
password = request.POST.get('userPwd', None)
|
|
|
salt = request.POST.get('salt', None)
|
|
|
+ iterations = request.POST.get('iterations', None)
|
|
|
password_version = request.POST.get('pwdVersion', 'V1')
|
|
|
response = ResponseObject(lang=lang) if lang else ResponseObject()
|
|
|
request.encoding = 'utf-8'
|
|
@@ -4524,7 +4536,7 @@ def deleteAccount(request):
|
|
|
if password_version == 'V1':
|
|
|
check_flag = check_password(password, userPWD['password'])
|
|
|
else:
|
|
|
- password = "%s$%d$%s$%s" % ("pbkdf2_sha256", 260000, salt, password)
|
|
|
+ password = "%s$%d$%s$%s" % ("pbkdf2_sha256", iterations, salt, password)
|
|
|
check_flag = CommonService.check_password(password, userPWD['password'])
|
|
|
if not check_flag:
|
|
|
return response.json(111)
|