Forráskód Böngészése

增加无密码登录接口2

chenshibin 4 éve
szülő
commit
6a25001d91
3 módosított fájl, 93 hozzáadás és 80 törlés
  1. 0 78
      AdminController/UserManageController.py
  2. 2 2
      Ansjer/urls.py
  3. 91 0
      Controller/UserController.py

+ 0 - 78
AdminController/UserManageController.py

@@ -133,84 +133,6 @@ class LoginView(TemplateView):
 
 
 
-# 登录
-class noPasslogin(TemplateView):
-    @method_decorator(csrf_exempt)  # @csrf_exempt
-    def dispatch(self, *args, **kwargs):
-        return super(noPasslogin, self).dispatch(*args, **kwargs)
-
-    def post(self, request, *args, **kwargs):
-        request.encoding = 'utf-8'
-        request_dict = request.POST
-        language = request_dict.get('language', 'en')
-        response = ResponseObject(language,'pc')
-
-        return self.validates(request_dict, response)
-
-
-
-    def validates(self, request_dict, response):
-        username = request_dict.get('username', None)
-        if not username:
-            return response.json(111)
-        username = username.strip()
-        data_valid = DataValid()
-        if data_valid.email_validate(username):
-            return self.do_email_login(username, response)
-        elif data_valid.mobile_validate(username):
-            return self.do_phone_login(username, response)
-        elif data_valid.name_validate(username):
-            return self.do_name_login(username, response)
-        else:
-            return response.json(107)
-
-    def do_email_login(self, email, response):
-        user_qs = Device_User.objects.filter(Q(username=email))
-        return self.valid_login(user_qs, response)
-
-    def do_phone_login(self, phone, response):
-        user_qs = Device_User.objects.filter(Q(phone=phone), is_active=True, user_isValid=True)
-        return self.valid_login(user_qs, response)
-
-    def do_name_login(self, username, response):
-        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, response)
-
-    def valid_login(self, user_qs, response):
-        if not user_qs.exists():
-            return response.json(104)
-        # users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
-        #                        'phone', 'password', 'userIconPath', 'user_isValid', 'is_active')[0]
-        users = user_qs.values('role__rid', 'role__roleName', 'userID', 'NickName', 'username', 'userEmail',
-                               'phone', 'password', 'userIconPath')[0]
-
-        userID = users['userID']
-        tko = TokenObject(returntpye='pc')
-        res = tko.generate(
-            data={'userID': userID, 'lang': response.lang, 'user': users['username'], 'm_code': '123413243214'})
-        if tko.code == 0:
-            now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
-            user_qs.update(last_login=now_time, language=response.lang)
-            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 ''
-            return response.json(0, res)
-        else:
-            return response.json(tko.code)
-
 
 # 获取登录权限
 class GetPermissions(TemplateView):

+ 2 - 2
Ansjer/urls.py

@@ -29,7 +29,7 @@ urlpatterns = [
     url(r'^v3/account/imageCodeRegister/$', UserController.Image_Code_RegisterView.as_view()),
     url(r'^account/register$', UserController.registerView.as_view()),
     url(r'^account/login$', UserController.v2LoginView.as_view()),
-    url(r'^account/logout$', UserController.LogoutView.as_view()),
+    url(r'^account/noPasslogin$', UserController.noPasslogin.as_view()),
     url(r'^account/changePwd$', UserController.ChangePwdView.as_view()),
     url(r'^account/forget$', UserController.ForgetPwdView.as_view()),
     url(r'^account/email-re-pwd$', UserController.EmailResetPwdView.as_view()),
@@ -338,7 +338,7 @@ urlpatterns = [
     #后台界面接口 -----------------------------------------------------
     #用户登录信息等
     url(r'^login$', UserManageController.LoginView.as_view()),
-    url(r'^noPasslogin$', UserManageController.noPasslogin.as_view()),
+    url(r'^noPasslogin$', UserManageController.LoginView.as_view()),
     url(r'^userInfo$', UserManageController.GetPermissions.as_view()),
     url(r'^router/getList$', UserManageController.GetList.as_view()),
     re_path('userManagement/(?P<operation>.*)', UserManageController.UserManagement.as_view()),

+ 91 - 0
Controller/UserController.py

@@ -1700,6 +1700,97 @@ class v2LoginView(TemplateView):
             return response.json(tko.code)
 
 
+# 登录
+class noPasslogin(TemplateView):
+    @method_decorator(csrf_exempt)  # @csrf_exempt
+    def dispatch(self, *args, **kwargs):
+        return super(noPasslogin, self).dispatch(*args, **kwargs)
+
+    @ratelimit(key='ip', rate='5/m')
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        language = request_dict.get('language', 'en')
+        response = ResponseObject(language)
+        was_limited = getattr(request, 'limited', False)
+        if was_limited is True:
+            return response.json(5)
+        return self.validates(request_dict, response)
+
+    # @ratelimit(key='ip', rate='5/m')
+    def get(self, request, *args, **kwargs):
+        print("进来了")
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        language = request_dict.get('language', 'en')
+        response = ResponseObject(language)
+        was_limited = getattr(request, 'limited', False)
+        if was_limited is True:
+            return response.json(5)
+        return self.validates(request_dict, response)
+
+    def validates(self, request_dict, response):
+        username = request_dict.get('userName', None)
+        if not username:
+            return response.json(111)
+        username = username.strip()
+        data_valid = DataValid()
+        if data_valid.email_validate(username):
+            return self.do_email_login(username, response)
+        elif data_valid.mobile_validate(username):
+            return self.do_phone_login(username, response)
+        elif data_valid.name_validate(username):
+            return self.do_name_login(username, response)
+        else:
+            return response.json(107)
+
+    def do_email_login(self, email, response):
+        user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
+        return self.valid_login(user_qs, response)
+
+    def do_phone_login(self, phone, response):
+        user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone), is_active=True, user_isValid=True)
+        return self.valid_login(user_qs, response)
+
+    def do_name_login(self, username, response):
+        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, response)
+
+    def valid_login(self, user_qs, response):
+        if not user_qs.exists():
+            return response.json(104)
+        # users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
+        #                        'phone', 'password', 'userIconPath', 'user_isValid', 'is_active')[0]
+        users = user_qs.values('role__rid', 'role__roleName', 'userID', 'NickName', 'username', 'userEmail',
+                               'phone', 'password', 'userIconPath')[0]
+        userID = users['userID']
+        tko = TokenObject()
+        res = tko.generate(
+            data={'userID': userID, 'lang': response.lang, 'user': users['username'], 'm_code': '123413243214'})
+        if tko.code == 0:
+            now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
+            user_qs.update(last_login=now_time, language=response.lang)
+            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 ''
+            return response.json(0, res)
+        else:
+            return response.json(tko.code)
+
+
 # 密码加密新登录
 class v3LoginView(TemplateView):
     @method_decorator(csrf_exempt)  # @csrf_exempt