Coverage for ingadhoc-odoo-saas / saas_client / models / ir_http.py: 28%
24 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:05 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:05 +0000
1##############################################################################
2# For copyright and license notices, see __manifest__.py file in module root
3# directory
4##############################################################################
5from odoo import fields, models
6from odoo.api import SUPERUSER_ID
7from odoo.http import SessionExpiredException, request, root
10class Http(models.AbstractModel):
11 _inherit = "ir.http"
13 @classmethod
14 def _authenticate(cls, endpoint):
15 """If database suspended let root connect but denied access to
16 the other users.
17 """
18 res = super(Http, cls)._authenticate(endpoint=endpoint)
19 # auth_method = endpoint.routing["auth"]
20 uid = request.session.uid
21 if not request or not uid:
22 return res
24 # Usar ormcache para esto mejorara la velocidad?
25 # https://github.com/OCA/server-auth/blob/14.0/auth_session_timeout/models/ir_config_parameter.py
26 suspended = request.env["ir.config_parameter"].sudo().get_param("saas_client.suspended", "0")
27 # al proposito no dejamos a admin/soporte adho
28 if suspended == "1" and uid != SUPERUSER_ID:
29 # Fuerzo eliminar los datos de session para evitar login recursivo
30 # Con logout no todos los datos se borrar. aunque deberian :()
31 root.session_store.delete(request.session)
32 request.session.logout()
33 raise SessionExpiredException()
34 return res
36 @classmethod
37 def _auth_method_user(cls):
38 super()._auth_method_user()
39 if session_timeout := request.session.get("session_timeout"):
40 if fields.Datetime.now() > fields.Datetime.to_datetime(session_timeout):
41 request.session.logout(keep_db=True)
42 raise SessionExpiredException()