mirror of
https://github.com/bringout/oca-server-auth.git
synced 2026-04-19 06:12:02 +02:00
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
# Copyright 2021 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from urllib.parse import parse_qsl, urlparse
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
from odoo.addons.auth_oauth.controllers.main import OAuthLogin
|
|
|
|
|
|
class OAuthAutoLogin(OAuthLogin):
|
|
def _autologin_disabled(self, redirect):
|
|
url = urlparse(redirect)
|
|
params = dict(parse_qsl(url.query, keep_blank_values=True))
|
|
return "no_autologin" in params or "oauth_error" in params or "error" in params
|
|
|
|
def _autologin_link(self):
|
|
providers = [p for p in self.list_providers() if p.get("autologin")]
|
|
if len(providers) == 1:
|
|
return providers[0].get("auth_link")
|
|
|
|
@http.route(
|
|
"/auth/auto_login_redirect_link",
|
|
type="json",
|
|
auth="none",
|
|
)
|
|
def auto_login_redirect_link(self, *args, **kwargs):
|
|
redirect = kwargs.get("redirect")
|
|
if self._autologin_disabled(redirect):
|
|
return False
|
|
request.params["redirect"] = redirect
|
|
auth_link = self._autologin_link()
|
|
return auth_link
|