Logga in
(() => {
const params = new URLSearchParams(window.location.search);
const redirectTarget = params.get('redirect_to');
// Avsluta om redirect_to saknas eller är tomt
if (!redirectTarget) {
return;
}
let validatedRedirect;
try {
const targetUrl = new URL(redirectTarget, window.location.origin);
// Tillåt endast http/https-URL:er på den aktuella domänen
if (
!['http:', 'https:'].includes(targetUrl.protocol) ||
targetUrl.origin !== window.location.origin
) {
return;
}
validatedRedirect = targetUrl.href;
} catch {
// Avsluta om redirect_to inte är en giltig URL
return;
}
const updateRedirectField = () => {
const field = document.querySelector(
'input[type="hidden"][name="redirect_to"]'
);
if (!field) {
return false;
}
field.value = validatedRedirect;
field.setAttribute('value', validatedRedirect);
return true;
};
// Uppdatera omedelbart om fältet redan finns
if (updateRedirectField()) {
return;
}
// Vänta annars på att det inbäddade formuläret ska läsas in
const observer = new MutationObserver(() => {
if (updateRedirectField()) {
observer.disconnect();
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
})();
