From 987077e7d7da120750bf73aa576b12c9821642a1 Mon Sep 17 00:00:00 2001 From: Firmlyzhu Date: Sun, 16 Sep 2018 15:52:15 +0800 Subject: [PATCH] Add information of login to user log --- src/master/userManager.py | 17 ++++++++++++----- user/user.py | 6 ++++-- web/webViews/authenticate/login.py | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/master/userManager.py b/src/master/userManager.py index 6d89835..30ebe76 100755 --- a/src/master/userManager.py +++ b/src/master/userManager.py @@ -254,7 +254,7 @@ class userManager: } return result - def auth_external(self, form): + def auth_external(self, form, userip=""): if (env.getenv('EXTERNAL_LOGIN') != 'True'): failed_result = {'success': 'false', 'reason' : 'external auth disabled'} @@ -267,6 +267,7 @@ class userManager: return failed_result username = result['username'] + logger.info("External login success: username=%s, userip=%s" % (username, userip)) user = User.query.filter_by(username = username).first() if (user != None and user.auth_method == result['auth_method']): result = { @@ -316,19 +317,25 @@ class userManager: } return result - def auth(self, username, password): + def auth(self, username, password, userip=""): ''' authenticate a user by username & password return a token as well as some user information ''' user = User.query.filter_by(username = username).first() + result = {} if (user == None or user.auth_method =='pam'): - return self.auth_pam(username, password) + result = self.auth_pam(username, password) elif (user.auth_method == 'local'): - return self.auth_local(username, password) + result = self.auth_local(username, password) else: result = {'success':'false', 'reason':'auth_method error'} - return result + + if result['success'] == 'true': + logger.info("Login success: username=%s, userip=%s" % (result['data']['username'], userip)) + else: + logger.info("Login failed: userip=%s" % (userip)) + return result def auth_token(self, token): ''' diff --git a/user/user.py b/user/user.py index 38b9de7..14e83d0 100755 --- a/user/user.py +++ b/user/user.py @@ -87,9 +87,10 @@ def login(): logger.info("handle request : user login") user = request.form.get("user", None) key = request.form.get("key", None) + userip = request.form.get("ip", "") if user == None or key == None: return json.dumps({'success': 'false', 'message':'user or key is null'}) - auth_result = G_usermgr.auth(user,key) + auth_result = G_usermgr.auth(user,key,userip) if auth_result['success'] == 'false': logger.info("%s login failed" % user) return json.dumps({'success':'false', 'message':'auth failed'}) @@ -100,8 +101,9 @@ def login(): def external_login(): global G_usermgr logger.info("handle request : external user login") + userip = request.form.get("ip", "") try: - result = G_usermgr.auth_external(request.form) + result = G_usermgr.auth_external(request.form,userip) return json.dumps(result) except: result = {'success':'false', 'reason':'Something wrong happened when auth an external account'} diff --git a/web/webViews/authenticate/login.py b/web/webViews/authenticate/login.py index 91cef45..efc5252 100755 --- a/web/webViews/authenticate/login.py +++ b/web/webViews/authenticate/login.py @@ -52,7 +52,7 @@ class loginView(normalView): @classmethod def post(self): if (request.form['username']): - data = {"user": request.form['username'], "key": request.form['password']} + data = {"user": request.form['username'], "key": request.form['password'], 'ip': request.remote_addr} result = dockletRequest.unauthorizedpost('/login/', data) ok = result and result.get('success', None) if (ok and (ok == "true")):