Coverage for ingadhoc-odoo-saas / saas_client / controllers / auth.py: 21%

25 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-09 18:15 +0000

1############################################################################## 

2# For copyright and license notices, see __manifest__.py file in module root 

3# directory 

4# Based in https://gitlab.com/hibou-io/hibou-odoo/suite 

5############################################################################## 

6from datetime import timedelta 

7 

8from odoo import exceptions, fields, http 

9from odoo.http import request 

10 

11 

12class OAuthController(http.Controller): 

13 @http.route(["/saas_auth"], type="http", auth="public", website=True) 

14 def saas_auth(self, u, e, o, h, **post): 

15 redirect_url = post.get("redirect", "/web") 

16 u, e, h, o = map(str, [u, e, h, o]) 

17 try: 

18 user = request.env["res.users"]._check_admin_auth_login(u, e, o, h) 

19 

20 request.session.uid = user.id 

21 request.session.login = user.login 

22 request.session["password"] = "" 

23 request.session["auth_admin"] = o 

24 request.session["session_timeout"] = fields.Datetime.to_string(fields.Datetime.now() + timedelta(hours=12)) 

25 request.update_env(user=user.id) 

26 credential = {"login": user.login, "password": "x", "type": "password"} 

27 auth_info = request.session.authenticate(http.request.env, credential) 

28 if auth_info["uid"] is not False: 

29 request.params["login_success"] = True 

30 if user._mfa_url(): 

31 request.session.finalize(request.env) 

32 return request.redirect(redirect_url) 

33 except (exceptions.UserError,) as e: 

34 return http.Response(str(e), status=400)