diff --git a/src/app/verify-email/page.tsx b/src/app/verify-email/page.tsx new file mode 100644 index 0000000..8285f63 --- /dev/null +++ b/src/app/verify-email/page.tsx @@ -0,0 +1,136 @@ +'use client'; + +import { Suspense, useEffect, useState } from 'react'; +import { useSearchParams } from 'next/navigation'; +import Link from 'next/link'; +import { authService, AuthService } from '@/services/auth.service'; + +function VerifyEmailContent() { + const searchParams = useSearchParams(); + const token = searchParams.get('token'); + + const [status, setStatus] = useState<'loading' | 'success' | 'error'>('loading'); + const [message, setMessage] = useState(''); + + useEffect(() => { + const verifyEmail = async () => { + if (!token) { + setStatus('error'); + setMessage('Invalid verification link. No token provided.'); + return; + } + + try { + const response = await authService.verifyEmail({ token }); + setStatus('success'); + setMessage(response.data?.message || 'Your email has been verified successfully!'); + } catch (error) { + setStatus('error'); + const errorMsg = AuthService.getErrorMessage(error); + setMessage(errorMsg || 'Email verification failed. The link may have expired or is invalid.'); + } + }; + + verifyEmail(); + }, [token]); + + return ( +
Please wait while we verify your email address...
+{message}
+ + Continue to Login + +{message}
+Please wait...
+