Jelajahi Sumber

注册支持直接登录

chenjunkai 6 tahun lalu
induk
melakukan
0e731da871
1 mengubah file dengan 51 tambahan dan 31 penghapusan
  1. 51 31
      Controller/UserController.py

+ 51 - 31
Controller/UserController.py

@@ -781,20 +781,39 @@ class v2registerView(TemplateView):
         else:
             if not reds.del_data(key=phone + '_identifyingCode'):
                 return response.json(10, '删除缓存验证码错误')
-            return response.json(0, {
-                "user": {
-                    "userID": users.userID,
-                    "username": users.username,
-                    "userEmail": users.userEmail,
-                    "phone": users.phone,
-                    "NickName": users.NickName,
-                    "userIconUrl": str(users.userIconUrl),
-                    "is_superuser": users.is_superuser,
-                    "is_active": users.is_active,
-                    "data_joined": date_handler(users.data_joined),
-                    "last_login": date_handler(users.last_login),
-                }
-            })
+            return self.do_login(phone_qs, response)
+            # return response.json(0, {
+            #     "user": {
+            #         "userID": users.userID,
+            #         "username": users.username,
+            #         "userEmail": users.userEmail,
+            #         "phone": users.phone,
+            #         "NickName": users.NickName,
+            #         "userIconUrl": str(users.userIconUrl),
+            #         "is_superuser": users.is_superuser,
+            #         "is_active": users.is_active,
+            #         "data_joined": date_handler(users.data_joined),
+            #         "last_login": date_handler(users.last_login),
+            #     }
+            # })
+
+    def do_login(self, user_qs, response):
+        userID = user_qs[0].userID
+        print('userID' + userID)
+        tko = TokenObject()
+        res = tko.generate(data={'userID': userID, 'lang': response.lang})
+        if tko.code == 0:
+            now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+            user_qs.update(last_login=now_time, online=True, language=response.lang)
+            role_dict = ModelService.own_role(userID=userID)
+            res['rid'] = role_dict['rid']
+            res['roleName'] = role_dict['roleName']
+            res['permList'] = ModelService.own_permission(userID)
+            res['userID'] = userID
+            print(res)
+            return response.json(0, res)
+        else:
+            return response.json(tko.code)
 
     def do_email_register(self, email, password, authcode, response):
         data_valid = DataValid()
@@ -829,6 +848,8 @@ class v2registerView(TemplateView):
         else:
             if not reds.del_data(key=email + '_identifyingCode'):
                 return response.json(10, '删除缓存验证码错误')
+            return self.do_login(email_qs, response)
+
             return response.json(0, {
                 "user": {
                     "userID": users.userID,
@@ -942,7 +963,7 @@ class v2resetPwdByCodeView(TemplateView):
         else:
             return response.json(444, 'phone,password,authcode')
 
-    def do_phone_pwd_reset(self, phone, authcode,password, response):
+    def do_phone_pwd_reset(self, phone, authcode, password, response):
         data_valid = DataValid()
         if data_valid.mobile_validate(phone) is not True:
             return response.json(100)
@@ -961,11 +982,10 @@ class v2resetPwdByCodeView(TemplateView):
             return response.json(10, '生成缓存错误')
         user_qs.update(password=make_password(password))
         if not reds.del_data(phone + '_forgetPwdResetCode'):
-            return response.json(10,'删除缓存失败')
+            return response.json(10, '删除缓存失败')
         return response.json(0)
 
 
-
 # 登录
 class v2LoginView(TemplateView):
     @method_decorator(csrf_exempt)  # @csrf_exempt
@@ -1003,41 +1023,41 @@ class v2LoginView(TemplateView):
             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)
             elif data_valid.mobile_validate(username):
-                return self.do_phone_login(username,password,response)
+                return self.do_phone_login(username, password, response)
             elif data_valid.name_validate(username):
-                return self.do_name_login(username,password,response)
+                return self.do_name_login(username, password, response)
             else:
                 return response.json(107)
         else:
             return response.json(444, 'username,password')
 
-    def do_email_login(self,email,password,response):
-        user_qs = Device_User.objects.filter(Q(username=email)|Q(userEmail=email))
+    def do_email_login(self, email, password, response):
+        user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
         if not user_qs.exists():
             return response.json(104)
         if not user_qs[0].user_isValid or not user_qs[0].is_active:
             return response.json(110)
-        return self.valid_login(user_qs,password,response)
+        return self.valid_login(user_qs, password, response)
 
-    def do_phone_login(self,phone,password,response):
-        user_qs = Device_User.objects.filter(Q(phone=phone)|Q(username=phone))
+    def do_phone_login(self, phone, password, response):
+        user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone))
         if not user_qs.exists():
             return response.json(104)
         if not user_qs[0].user_isValid or not user_qs[0].is_active:
             return response.json(110)
-        return self.valid_login(user_qs,password,response)
+        return self.valid_login(user_qs, password, response)
 
-    def do_name_login(self,username,password,response):
+    def do_name_login(self, username, password, response):
         user_qs = Device_User.objects.filter(username=username)
         if not user_qs.exists():
             return response.json(104)
         if not user_qs[0].user_isValid or not user_qs[0].is_active:
             return response.json(110)
-        return self.valid_login(user_qs,password,response)
+        return self.valid_login(user_qs, password, response)
 
-    def valid_login(self,user_qs,password,response):
+    def valid_login(self, user_qs, password, response):
         if not check_password(password, user_qs[0].password):
             return response.json(111)
         userID = user_qs[0].userID
@@ -1046,7 +1066,7 @@ class v2LoginView(TemplateView):
         res = tko.generate(data={'userID': userID, 'lang': response.lang})
         if tko.code == 0:
             now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
-            user_qs.update(last_login=now_time, online=True,language=response.lang)
+            user_qs.update(last_login=now_time, online=True, language=response.lang)
             role_dict = ModelService.own_role(userID=userID)
             res['rid'] = role_dict['rid']
             res['roleName'] = role_dict['roleName']
@@ -1055,4 +1075,4 @@ class v2LoginView(TemplateView):
             print(res)
             return response.json(0, res)
         else:
-            return response.json(tko.code)
+            return response.json(tko.code)