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: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# Based in https://gitlab.com/hibou-io/hibou-odoo/suite
5##############################################################################
6from datetime import timedelta
8from odoo import exceptions, fields, http
9from odoo.http import request
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)
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)