Эх сурвалжийг харах

记录用户登录成功日志

locky 4 сар өмнө
parent
commit
8037d5cabd

+ 28 - 12
Controller/UserController.py

@@ -2251,9 +2251,9 @@ class v3LoginView(TemplateView):
         was_limited = getattr(request, 'limited', False)
         if was_limited is True:
             return response.json(5)
-        return self.validates(request_dict, response)
+        return self.validates(request_dict, response, request)
 
-    def validates(self, request_dict, response):
+    def validates(self, request_dict, response, request):
         username = request_dict.get('userName', None)
         password = request_dict.get('userPwd', None)
         password_version = request_dict.get('pwdVersion', 'V1')
@@ -2290,30 +2290,31 @@ class v3LoginView(TemplateView):
             print(repr(e))
             return response.json(111)
         else:
+            ip = CommonService.get_ip_address(request)
             data_valid = DataValid()
             if data_valid.email_validate(username):
-                return self.do_email_login(username, password, response, subscribe, number, request_dict)
+                return self.do_email_login(username, password, response, subscribe, number, request_dict, ip)
             elif data_valid.mobile_validate(username):
-                return self.do_phone_login(username, password, response, subscribe, number, request_dict)
+                return self.do_phone_login(username, password, response, subscribe, number, request_dict, ip)
             elif data_valid.name_validate(username):
-                return self.do_name_login(username, password, response, subscribe, number, request_dict)
+                return self.do_name_login(username, password, response, subscribe, number, request_dict, ip)
             else:
                 return response.json(107)
 
-    def do_email_login(self, email, password, response, subscribe, number, request_dict):
+    def do_email_login(self, email, password, response, subscribe, number, request_dict, ip):
         user_qs = Device_User.objects.filter(Q(username=email) | Q(userEmail=email))
-        return self.valid_login(user_qs, password, response, subscribe, number, request_dict)
+        return self.valid_login(user_qs, password, response, subscribe, number, request_dict, ip)
 
-    def do_phone_login(self, phone, password, response, subscribe, number, request_dict):
+    def do_phone_login(self, phone, password, response, subscribe, number, request_dict, ip):
         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)
+        return self.valid_login(user_qs, password, response, subscribe, number, request_dict, ip)
 
-    def do_name_login(self, username, password, response, subscribe, number, request_dict):
+    def do_name_login(self, username, password, response, subscribe, number, request_dict, ip):
         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)
+        return self.valid_login(user_qs, password, response, subscribe, number, request_dict, ip)
 
-    def valid_login(self, user_qs, password, response, subscribe, number, request_dict):
+    def valid_login(self, user_qs, password, response, subscribe, number, request_dict, ip):
         password_version = request_dict.get('pwdVersion', 'V1')
         salt = request_dict.get('salt', None)
         iterations = request_dict.get('iterations', None)
@@ -2405,6 +2406,21 @@ class v3LoginView(TemplateView):
         res['authType'] = auth_type
         res['subscribe_email'] = users['subscribe_email'] if users['subscribe_email'] is not None else ''
         res['region'] = region_qs[0]['country_name'] if region_qs.exists() else ''
+
+        # 记录操作日志
+        username = CommonService.get_username(userID)
+        content = json.loads(json.dumps(request_dict))
+        log = {
+            'ip': ip,
+            'user_id': 1,
+            'status': 200,
+            'time': int(time.time()),
+            'content': json.dumps(content),
+            'url': 'v3/account/login',
+            'operation': '{}用户登录成功'.format(username),
+        }
+        LogModel.objects.create(**log)
+
         return response.json(0, res)