Update native OIDC callback url to be RFC8252 compliant

By switching the double slash for a single one

Fixes https://github.com/element-hq/element-desktop/issues/1889

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2024-09-24 16:56:08 +01:00
parent 787feca6a4
commit 994fcd6319
No known key found for this signature in database
GPG key ID: A2B008A5F49F5D0D

View file

@ -472,6 +472,12 @@ export default class ElectronPlatform extends VectorBasePlatform {
public getOidcCallbackUrl(): URL { public getOidcCallbackUrl(): URL {
const url = super.getOidcCallbackUrl(); const url = super.getOidcCallbackUrl();
url.protocol = "io.element.desktop"; url.protocol = "io.element.desktop";
// Trim the double slash into a single slash to comply with https://datatracker.ietf.org/doc/html/rfc8252#section-7.1
// Chrome seems to have a strange issue where non-standard protocols prevent URL object mutations on pathname
// field, so we cannot mutate `pathname` reliably and instead have to rewrite the href manually.
if (url.pathname.startsWith("//")) {
url.href = url.href.replace(url.pathname, url.pathname.slice(1));
}
return url; return url;
} }
} }