|
|
|
@ -11,7 +11,7 @@
|
|
|
|
</head>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
<body class="py-14">
|
|
|
|
<body class="py-14">
|
|
|
|
<main class="container max-w-lg mx-auto py-6 px-8 bg-white rounded-md shadow-2xl" style="width: 95%">
|
|
|
|
<main class="container max-w-lg mx-auto py-6 px-8 bg-white rounded-md shadow-2xl" style="width: 95%">
|
|
|
|
<header class="flex justify-between items-center min-width-0 py-2 mb-8">
|
|
|
|
<header class="flex justify-between items-center min-width-0 py-2 mb-8">
|
|
|
|
<svg width="26" height="26" viewBox="0 0 23 23" title="Tailscale" fill="none" xmlns="http://www.w3.org/2000/svg"
|
|
|
|
<svg width="26" height="26" viewBox="0 0 23 23" title="Tailscale" fill="none" xmlns="http://www.w3.org/2000/svg"
|
|
|
|
class="flex-shrink-0 mr-4">
|
|
|
|
class="flex-shrink-0 mr-4">
|
|
|
|
@ -88,13 +88,12 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<a href="#" class="mb-4 link font-medium js-loginButton" target="_blank">Reauthenticate</a>
|
|
|
|
<a href="#" class="mb-4 link font-medium js-loginButton" target="_blank">Reauthenticate</a>
|
|
|
|
{{ end }}
|
|
|
|
{{ end }}
|
|
|
|
</main>
|
|
|
|
</main>
|
|
|
|
<script>
|
|
|
|
<script>(function () {
|
|
|
|
(function () {
|
|
|
|
let loginButtons = document.querySelectorAll(".js-loginButton");
|
|
|
|
let loginButtons = document.querySelectorAll(".js-loginButton");
|
|
|
|
let fetchingUrl = false;
|
|
|
|
let fetchingUrl = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function handleClick(e) {
|
|
|
|
function handleClick(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
|
|
|
|
if (fetchingUrl) {
|
|
|
|
if (fetchingUrl) {
|
|
|
|
@ -112,8 +111,6 @@
|
|
|
|
nextUrl.search = nextParams.toString()
|
|
|
|
nextUrl.search = nextParams.toString()
|
|
|
|
const url = nextUrl.toString();
|
|
|
|
const url = nextUrl.toString();
|
|
|
|
|
|
|
|
|
|
|
|
const tab = window.open("/redirect", "_blank");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fetch(url, {
|
|
|
|
fetch(url, {
|
|
|
|
method: "POST",
|
|
|
|
method: "POST",
|
|
|
|
headers: {
|
|
|
|
headers: {
|
|
|
|
@ -128,23 +125,19 @@
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const url = res["url"];
|
|
|
|
const url = res["url"];
|
|
|
|
if (url) {
|
|
|
|
if (url) {
|
|
|
|
authUrl = url;
|
|
|
|
document.location.href = url;
|
|
|
|
tab.location = url;
|
|
|
|
|
|
|
|
tab.focus();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
location.reload();
|
|
|
|
location.reload();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).catch(err => {
|
|
|
|
}).catch(err => {
|
|
|
|
tab.close();
|
|
|
|
|
|
|
|
alert("Failed to log in: " + err.message);
|
|
|
|
alert("Failed to log in: " + err.message);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Array.from(loginButtons).forEach(el => {
|
|
|
|
Array.from(loginButtons).forEach(el => {
|
|
|
|
el.addEventListener("click", handleClick);
|
|
|
|
el.addEventListener("click", handleClick);
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})();
|
|
|
|
})();</script>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</body>
|
|
|
|
|
|
|
|
|
|
|
|
</html>
|
|
|
|
</html>
|
|
|
|
|