|
|
@@ -214,7 +214,7 @@ import { Mail, Lock, ArrowRight, Loader2, ShieldCheck, KeyRound, ArrowLeft, Shie
|
|
|
import Button from "@/components/ui/button.vue";
|
|
|
import Logo from "@/components/Logo.vue";
|
|
|
import LanguageSwitcher from "@/components/LanguageSwitcher.vue";
|
|
|
-import { loginUser, registerUser, forgotPassword, resetPassword, socialLogin } from "@/lib/api";
|
|
|
+import { loginUser, registerUser, forgotPassword, resetPassword, socialLogin, verifyResetToken } from "@/lib/api";
|
|
|
import { useAuthStore } from "@/stores/auth";
|
|
|
import i18n, { currentLanguage } from "@/i18n";
|
|
|
|
|
|
@@ -247,7 +247,20 @@ onMounted(async () => {
|
|
|
const verifyToken = route.query.verify_token as string;
|
|
|
const qMode = route.query.mode as AuthMode;
|
|
|
|
|
|
- if (token) { mode.value = "reset"; formData.token = token; }
|
|
|
+ if (token) {
|
|
|
+ isLoading.value = true;
|
|
|
+ try {
|
|
|
+ await verifyResetToken(token);
|
|
|
+ mode.value = "reset";
|
|
|
+ formData.token = token;
|
|
|
+ } catch (err: any) {
|
|
|
+ toast.error(err.message || "Link has expired");
|
|
|
+ router.replace({ query: { ...route.query, token: undefined } });
|
|
|
+ mode.value = "login";
|
|
|
+ } finally {
|
|
|
+ isLoading.value = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
if (qMode) { mode.value = qMode; }
|
|
|
|
|
|
// Watch for query changes if already on the page
|