diff --git a/cross_connect_client/controllers/cross_connect.py b/cross_connect_client/controllers/cross_connect.py index ea752f4cd6..0b5365a85a 100644 --- a/cross_connect_client/controllers/cross_connect.py +++ b/cross_connect_client/controllers/cross_connect.py @@ -21,5 +21,5 @@ def cross_connect( if not server: raise UserError(request.env._("Server not found")) - url = server._get_cross_connect_url(request.params.get("redirect_url")) + url = server._get_cross_connect_url(**params) return request.redirect(url, local=False) diff --git a/cross_connect_client/models/cross_connect_server.py b/cross_connect_client/models/cross_connect_server.py index f0b3dce29c..3dc0d3f387 100644 --- a/cross_connect_client/models/cross_connect_server.py +++ b/cross_connect_client/models/cross_connect_server.py @@ -2,6 +2,8 @@ # @author Florian Mounier # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from urllib.parse import urlencode + import requests from odoo import api, fields, models @@ -98,7 +100,7 @@ def _request(self, method, url, headers=None, data=None): response.raise_for_status() return response.json() - def _get_cross_connect_url(self, redirect_url=None): + def _get_cross_connect_url(self, **params): self.ensure_one() groups = self.env.user.groups_id & self.group_ids if not groups: @@ -115,8 +117,6 @@ def _get_cross_connect_url(self, redirect_url=None): "lang": self.env.user.lang, "groups": [group.cross_connect_server_group_id for group in groups], } - if redirect_url: - data["redirect_url"] = redirect_url response = self._request("POST", "/access", data=data) client_id = response.get("client_id") @@ -124,7 +124,11 @@ def _get_cross_connect_url(self, redirect_url=None): if not token: raise UserError(self.env._("Missing token")) - return self._absolute_url_for(f"login/{client_id}/{token}") + url = f"login/{client_id}/{token}" + if params: + url += "?" + urlencode(params) + + return self._absolute_url_for(url) def _sync_groups(self): self.ensure_one()