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:37 +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 

8 

9 

10class Http(models.AbstractModel): 

11 _inherit = "ir.http" 

12 

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 

23 

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 

35 

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