43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
export default defineNuxtRouteMiddleware(async (to, from) => {
|
|
const token = to.params.token;
|
|
const forgotPasswordTokenStatus = useState<'unset' | 'invalid' | 'valid'>('forgot-password-token-status', () => 'unset')
|
|
|
|
if (!token) {
|
|
return navigateTo('/login');
|
|
}
|
|
|
|
try {
|
|
const isValid = await verifyToken(token as string);
|
|
|
|
if (!isValid) {
|
|
forgotPasswordTokenStatus.value = 'invalid'
|
|
} else {
|
|
forgotPasswordTokenStatus.value = 'valid'
|
|
}
|
|
} catch (error) {
|
|
forgotPasswordTokenStatus.value = 'invalid'
|
|
}
|
|
|
|
async function verifyToken(token: string) {
|
|
return new Promise((resolve) => setTimeout(() => {
|
|
if (token === 'success') {
|
|
return resolve(true)
|
|
} else {
|
|
return resolve(false)
|
|
}
|
|
}, 2000))
|
|
// const response = await fetch('https://your-backend.com/api/verify-token', {
|
|
// method: 'POST',
|
|
// headers: {
|
|
// 'Content-Type': 'application/json',
|
|
// },
|
|
// body: JSON.stringify({ token }),
|
|
// });
|
|
|
|
// const data = await response.json();
|
|
|
|
// return data.isValid;
|
|
}
|
|
|
|
});
|