parent
055d6e0023
commit
41d6b51089
2 changed files with 89 additions and 0 deletions
@ -0,0 +1,85 @@ |
||||
--- |
||||
import Spinner from '../components/Spinner.astro'; |
||||
import SettingLayout from '../layouts/SettingLayout.astro'; |
||||
--- |
||||
|
||||
<SettingLayout title='Verify account'> |
||||
<div class='container py-16'> |
||||
<div class='mx-auto flex max-w-md flex-col items-center'> |
||||
<h2 class='mb-6 text-3xl font-bold sm:text-center sm:text-4xl'> |
||||
Verifying account |
||||
</h2> |
||||
<Spinner data-verification-spinner className='!h-10 !w-10' /> |
||||
|
||||
<p |
||||
class='hidden text-center text-sm text-red-500' |
||||
data-verification-error |
||||
> |
||||
Invalid verification code, please try again. |
||||
</p> |
||||
|
||||
<p |
||||
class='mx-auto hidden max-w-sm text-center text-sm text-slate-500' |
||||
data-verification-success |
||||
> |
||||
If you are not redirected in a few seconds, please click the button |
||||
below. |
||||
<a href='/' class='text-slate-700 hover:text-slate-500' |
||||
>Redirect to home.</a |
||||
> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
</SettingLayout> |
||||
|
||||
<script> |
||||
import Cookies from 'js-cookie'; |
||||
import { TOKEN_COOKIE_NAME } from '../lib/utils'; |
||||
|
||||
const spinner = document.querySelector('[data-verification-spinner]'); |
||||
const error = document.querySelector('[data-verification-error]'); |
||||
const success = document.querySelector('[data-verification-success]'); |
||||
|
||||
// Check if the user is logged in already or not |
||||
if (Cookies.get(TOKEN_COOKIE_NAME)) { |
||||
window.location.href = '/'; |
||||
} |
||||
|
||||
window.addEventListener('load', () => { |
||||
const urlParams = new URLSearchParams(window.location.search); |
||||
const code = urlParams.get('code'); |
||||
|
||||
if (code) { |
||||
fetch('http://localhost:8080/v1-verify-account', { |
||||
method: 'POST', |
||||
headers: { |
||||
'Content-Type': 'application/json', |
||||
}, |
||||
body: JSON.stringify({ |
||||
code, |
||||
}), |
||||
}).then(async (res) => { |
||||
// If the response is ok, then we can redirect the user to the home page and set the token |
||||
if (res.ok) { |
||||
spinner?.remove(); |
||||
success?.classList.remove('hidden'); |
||||
const json = await res.json(); |
||||
|
||||
if (json.token) { |
||||
Cookies.set(TOKEN_COOKIE_NAME, json.token); |
||||
} else { |
||||
Cookies.remove(TOKEN_COOKIE_NAME); |
||||
} |
||||
|
||||
// After 3 seconds, redirect the user to the home page |
||||
setTimeout(() => { |
||||
window.location.href = '/'; |
||||
}, 3000); |
||||
} else { |
||||
spinner?.remove(); |
||||
error?.classList.remove('hidden'); |
||||
} |
||||
}); |
||||
} |
||||
}); |
||||
</script> |
Loading…
Reference in new issue