Browse Source

alexa登录返回用户地区

peng 2 years ago
parent
commit
a76cd46f72
2 changed files with 37 additions and 18 deletions
  1. 28 18
      Controller/UserController.py
  2. 9 0
      Service/CommonService.py

+ 28 - 18
Controller/UserController.py

@@ -3158,50 +3158,60 @@ class alexaAuthView(TemplateView):
     def validates(self, request_dict, response):
         username = request_dict.get('userName', None)
         password = request_dict.get('userPwd', None)
+        password_version = request_dict.get('pwdVersion', 'V1')
         if not username or not password:
             return response.json(111)
         username = username.strip()
         password = password.strip()
         data_valid = DataValid()
         if data_valid.email_validate(username):
-            return self.do_email_login(username, password, response)
+            return self.do_email_login(username, password, response, password_version)
         elif data_valid.mobile_validate(username):
-            return self.do_phone_login(username, password, response)
+            return self.do_phone_login(username, password, response, password_version)
         elif data_valid.name_validate(username):
-            return self.do_name_login(username, password, response)
+            return self.do_name_login(username, password, response, password_version)
         else:
             return response.json(107)
 
-    def do_email_login(self, email, password, response):
+    def do_email_login(self, email, password, response, password_version):
         user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
-        return self.valid_login(user_qs, password, response)
+        return self.valid_login(user_qs, password, response, password_version)
 
-    def do_phone_login(self, phone, password, response):
+    def do_phone_login(self, phone, password, response, password_version):
         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)
+        return self.valid_login(user_qs, password, response, password_version)
 
-    def do_name_login(self, username, password, response):
+    def do_name_login(self, username, password, response, password_version):
         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)
+        return self.valid_login(user_qs, password, response, password_version)
 
-    def valid_login(self, user_qs, password, response):
+    def valid_login(self, user_qs, password, response, password_version):
         if not user_qs.exists():
             return response.json(104)
-        users = user_qs.values('userID', 'password')[0]
-        if not check_password(password, users['password']):
+        users = user_qs.values('userID', 'password', 'region_country')[0]
+        if password_version == 'V1':
+            check_flag = check_password(password, users['password'])
+        else:
+            check_flag = CommonService.check_password(password, users['password'])
+        if not check_flag:
             return response.json(111)
         userID = users['userID']
-        # uid_qs = Device_Info.objects.filter(userID_id=userID, isExist=1).values('UID', 'NickName', 'View_Password')
-        # uid_arr = []
-        # for uid_q in uid_qs:
-        #     uid_arr.append({'uid': uid_q['UID'], 'nick': uid_q['NickName'], 'password': uid_q['View_Password']})
+        region_country = users['region_country']
+
+        # 确认用户地区
+        region_code = 'US'
+        country_qs = CountryModel.objects.filter(id=region_country).values('region_id')
+        if country_qs.exists():
+            region_id = country_qs[0]['region_id']
+            if region_id == 4:
+                region_code = 'EU'
+
         res = {
             'userID': userID,
-            #     'uid_arr': uid_arr
+            'region_code': region_code
         }
         return response.json(0, res)
-        # return response.json(0, res)
 
 
 class alexaUidView(TemplateView):

+ 9 - 0
Service/CommonService.py

@@ -13,6 +13,7 @@ import simplejson as json
 from dateutil.relativedelta import relativedelta
 from django.core import serializers
 from django.utils import timezone
+from django.utils.crypto import constant_time_compare
 from pyipip import IPIPDatabase
 
 from Ansjer.config import BASE_DIR, SERVER_DOMAIN_SSL, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, SERVER_DOMAIN_TEST, \
@@ -740,6 +741,14 @@ GCqvlyw5dfxNA+EtxNE2wCW/LW7ENJlACgcfgPlBZtpLheWoZB/maw4=
         else:
             return True
 
+    @staticmethod
+    def check_password(password1, password2):
+        """
+        比较密码
+        @param 返回True or False
+        """
+        return constant_time_compare(password1, password2)
+
     @staticmethod
     def compare_version_number(version_number, version_number_list):
         """