From 3233af59f2b8236480f3f3e1169d0e93ec73a480 Mon Sep 17 00:00:00 2001 From: Ajmal JK Date: Tue, 3 Mar 2020 12:58:38 +0530 Subject: [PATCH] [FIX] Bug Fixed 'restrict_logins' --- restrict_logins/__manifest__.py | 3 +- .../doc/{RELEASE_NOTES.md => changelog.md} | 5 +++ restrict_logins/models/ir_http.py | 41 ++++++++++++------- restrict_logins/views/res_users_view.xml | 18 ++++++++ 4 files changed, 52 insertions(+), 15 deletions(-) rename restrict_logins/doc/{RELEASE_NOTES.md => changelog.md} (60%) create mode 100644 restrict_logins/views/res_users_view.xml diff --git a/restrict_logins/__manifest__.py b/restrict_logins/__manifest__.py index 562bbf50b..0e5c5e2ab 100644 --- a/restrict_logins/__manifest__.py +++ b/restrict_logins/__manifest__.py @@ -22,7 +22,7 @@ { 'name': "Restrict Concurrent User Login", - 'version': '13.0.1.0.0', + 'version': '13.0.1.1.1', 'summary': 'Restrict concurrent sessions, User force logout, Automatic session expiry', "description": """Restrict concurrent sessions, User force logout, Automatic session expiry, restrict user login, session expiry, session, user session, force logout, @@ -35,6 +35,7 @@ 'data': [ 'data/data.xml', + 'views/res_users_view.xml', 'views/templates.xml', ], 'license': 'LGPL-3', diff --git a/restrict_logins/doc/RELEASE_NOTES.md b/restrict_logins/doc/changelog.md similarity index 60% rename from restrict_logins/doc/RELEASE_NOTES.md rename to restrict_logins/doc/changelog.md index 51dd6888b..e019ea1d5 100644 --- a/restrict_logins/doc/RELEASE_NOTES.md +++ b/restrict_logins/doc/changelog.md @@ -4,3 +4,8 @@ #### Version 13.0.1.0.0 #### ADD - Initial commit + +#### 03.03.2020 +#### Version 13.0.1.1.1 +#### FIX +- Bug Fixed diff --git a/restrict_logins/models/ir_http.py b/restrict_logins/models/ir_http.py index c1592658b..fc65c9e40 100644 --- a/restrict_logins/models/ir_http.py +++ b/restrict_logins/models/ir_http.py @@ -40,23 +40,36 @@ class IrHttp(models.AbstractModel): @classmethod def _authenticate(cls, auth_method='user'): + try: + def _update_user(u_sid, u_now, u_exp_date, u_uid): + if u_uid and u_exp_date and u_sid and u_now: + query = """update res_users set sid = '%s', + last_update = '%s',exp_date = '%s', + logged_in = 'TRUE' where id = %s + """ % (u_sid, u_now, u_exp_date, u_uid) + request.env.cr.execute(query) + uid = request.session.uid + user_pool = request.env['res.users'].with_user( + SUPERUSER_ID).browse(uid) + sid = request.session.sid + last_update = user_pool.last_update + now = datetime.now() + exp_date = datetime.now() + timedelta(minutes=45) + # update if there is no data and user is active + if not user_pool.last_update and not user_pool.sid and \ + not user_pool.logged_in: + _update_user(sid, now, exp_date, uid) + # update sid and date if last update is above 0.5 min + if last_update: + update_diff = (datetime.now() - last_update).total_seconds() / 60.0 + if uid and (update_diff > 0.5 or sid != user_pool.sid): + _update_user(sid, now, exp_date, uid) + except Exception as e: + _logger.info("Exception during updating user session...") + pass try: if request.session.uid: try: - uid = request.session.uid - user_pool = request.env['res.users'].with_user(SUPERUSER_ID).browse(uid) - sid = request.session.sid - last_update = user_pool.last_update - if last_update: - update_diff = (datetime.now() - last_update).total_seconds() / 60.0 - # update sid and date if last update is above 1 min - if uid and (update_diff > 1 or sid != user_pool.sid): - now = datetime.now() - exp_date = datetime.now() + timedelta(minutes=45) - query = """update res_users set sid = '%s', - last_update = '%s',exp_date = '%s' where id = %s - """ % (sid, now, exp_date, uid) - request.env.cr.execute(query) request.session.check_security() # what if error in security.check() # -> res_users.check() diff --git a/restrict_logins/views/res_users_view.xml b/restrict_logins/views/res_users_view.xml new file mode 100644 index 000000000..cd9c0d18a --- /dev/null +++ b/restrict_logins/views/res_users_view.xml @@ -0,0 +1,18 @@ + + + + + res.users.tree.restrict.logins + res.users + + + + + + + + + + + + \ No newline at end of file