blob: 75fb10c530e79ae3db4e0995a0ec9f805e6e2407 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<script lang="ts">
import { page } from '$app/state';
import { onDestroy, onMount } from 'svelte';
let _target = $derived(page.url.searchParams.get('next') || '/');
let target = $derived(
new URL(_target, page.url.href).host !== page.url.host ? '/' : _target
);
let loopDetected = $state(false);
let mounted = $state(false);
onMount(() => {
try {
if (
Number(
sessionStorage.getItem('lastLoginRedirect') ?? Date.now().toString()
) +
1000 >
Date.now() - 2500
) {
if (sessionStorage.getItem('loopCheck')) {
loopDetected = true;
}
setTimeout(() => sessionStorage.setItem('loopCheck', '1'), 100);
} else {
sessionStorage.removeItem('loopCheck');
}
sessionStorage.setItem('lastLoginRedirect', Date.now().toString());
} catch (error) {
console.warn('Loop Detect Error:', error);
}
mounted = true;
});
onDestroy(() => (mounted = false));
</script>
<svelte:head>
{#if !loopDetected}
<noscript>
<meta http-equiv="refresh" content="0.1; url={target}" />
</noscript>
{/if}
{#if mounted && !loopDetected}
<meta http-equiv="refresh" content="0.1; url={target}" />
{/if}
</svelte:head>
{#if loopDetected}
<h2 class="text-xl">Loop Detected</h2>
<p>
We detected a possible redirect loop and as such did not automatically
continue.
</p>
<p>
To continue anyway, click <a
href={target}
onclick={() => {
loopDetected = false;
sessionStorage.setItem('lastLoginRedirect', Date.now().toString());
sessionStorage.removeItem('loopCheck');
}}>here</a
>.
</p>
{:else}
<h2 class="text-xl">Redirecting...</h2>
<p>If nothing happens, click <a href={target}>here</a>.</p>
{/if}
|