diff --git a/galicea_openid_connect/controllers/main.py b/galicea_openid_connect/controllers/main.py index 423cac6..4a152bc 100644 --- a/galicea_openid_connect/controllers/main.py +++ b/galicea_openid_connect/controllers/main.py @@ -410,3 +410,30 @@ class Main(http.Controller): response=None, status=302, ) + + +from odoo.http import Root, HttpRequest + + +def patch_get_request(f): + """Allow ``/oauth/userinfo`` GET request to be accepted for outline + + Outline (and probably other services) can implement OIDC by adding a + ``content-type`` set to "application/json". This makes odoo 14 use + JsonRequest object that will refuse the request. + + This is monkey-patching, and is not meant to be a final solution, but + only a temporary one. + + """ + + def patched(self, httprequest): + if httprequest.path == "/oauth/userinfo" and \ + httprequest.method == "GET": + return HttpRequest(httprequest) + return f(self, httprequest) + + return patched + + +Root.get_request = patch_get_request(Root.get_request)