45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
# -*- coding: utf-8 -*-
 | 
						|
# (c) 2015 ACSONE SA/NV, Dhinesh D
 | 
						|
 | 
						|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 | 
						|
 | 
						|
from openerp import models
 | 
						|
from openerp import http
 | 
						|
 | 
						|
from openerp.http import root
 | 
						|
from openerp.http import request
 | 
						|
 | 
						|
from os import utime
 | 
						|
from os.path import getmtime
 | 
						|
from time import time
 | 
						|
 | 
						|
 | 
						|
class ResUsers(models.Model):
 | 
						|
    _inherit = 'res.users'
 | 
						|
 | 
						|
    def _check_session_validity(self, db, uid, passwd):
 | 
						|
        if not request:
 | 
						|
            return
 | 
						|
        session = request.session
 | 
						|
        session_store = root.session_store
 | 
						|
        param_obj = self.pool['ir.config_parameter']
 | 
						|
        delay, urls = param_obj.get_session_parameters(db)
 | 
						|
        deadline = time() - delay
 | 
						|
        path = session_store.get_session_filename(session.sid)
 | 
						|
        try:
 | 
						|
            if getmtime(path) < deadline:
 | 
						|
                if session.db and session.uid:
 | 
						|
                    session.logout(keep_db=True)
 | 
						|
            elif http.request.httprequest.path not in urls:
 | 
						|
                # the session is not expired, update the last modification
 | 
						|
                # and access time.
 | 
						|
                utime(path, None)
 | 
						|
        except OSError:
 | 
						|
            pass
 | 
						|
        return
 | 
						|
 | 
						|
    def check(self, db, uid, passwd):
 | 
						|
        res = super(ResUsers, self).check(db, uid, passwd)
 | 
						|
        self._check_session_validity(db, uid, passwd)
 | 
						|
        return res
 |