oca-ocb-core/odoo-bringout-oca-ocb-base/odoo/service/security.py
Ernad Husremovic 991d2234ca 19.0 vanilla
2025-10-03 18:07:25 +02:00

33 lines
1.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import time
from odoo.tools.misc import consteq
def compute_session_token(session, env):
self = env['res.users'].browse(session.uid)
return self._compute_session_token(session.sid)
def check_session(session, env, request=None):
session._delete_old_sessions()
# Make sure we don't use a deleted session that can be saved again
if 'deletion_time' in session and session['deletion_time'] <= time.time():
return False
self = env['res.users'].browse(session.uid)
expected = self._compute_session_token(session.sid)
if expected:
if consteq(expected, session.session_token):
if request:
env['res.device.log']._update_device(request)
return True
# If the session token is not valid, we check if the legacy version works
# and convert the session token to the new one
legacy_expected = self._legacy_session_token_hash_compute(session.sid)
if legacy_expected and consteq(legacy_expected, session.session_token):
session.session_token = expected
if request:
env['res.device.log']._update_device(request)
return True
return False