Browse Source

[FIX] Bug Fixed 'restrict_logins'

pull/145/head
Ajmal JK 5 years ago
parent
commit
3233af59f2
  1. 3
      restrict_logins/__manifest__.py
  2. 5
      restrict_logins/doc/changelog.md
  3. 41
      restrict_logins/models/ir_http.py
  4. 18
      restrict_logins/views/res_users_view.xml

3
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',

5
restrict_logins/doc/RELEASE_NOTES.md → 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

41
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()

18
restrict_logins/views/res_users_view.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="res_users_restrict_logins_tree" model="ir.ui.view">
<field name="name">res.users.tree.restrict.logins</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='login_date']" position="replace">
<field name="exp_date" string="Current Session Expiry" readonly="1"/>
<field name="logged_in" string="Logged In" readonly="1"/>
<field name="login_date" string="Last Login" readonly="1"/>
<field name="last_update" string="Last Connection" readonly="1"/>
</xpath>
</field>
</record>
</data>
</odoo>
Loading…
Cancel
Save