'use client'; import './style.scss'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useState, useEffect, useRef } from 'react'; import { ForgotPasswordRequest } from '@/types/request/auth'; import { fetchApi } from '@/lib/utils/client'; import { VerificationType } from '@/constants/common'; import Loading from '@/app/component/Loading'; export default function ForgotPassword() { const router = useRouter(); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [email, setEmail] = useState(''); const emailRef = useRef(null); useEffect(() => { if (error) { alert(error); setError(''); } }, [error]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); try { setLoading(true); setError(''); if (!email) { emailRef.current?.focus(); throw new Error('이메일을 입력해주세요.'); } await new Promise(resolve => setTimeout(resolve, 500)); const res = await fetchApi('/api/auth/forgot-password', { method: 'POST', body: { Email: email } as ForgotPasswordRequest }); // 시간 제한 생성 const expiration: string = (Date.now() + 10 * 60 * 1000).toString(); const callbackURL: string = location.pathname; sessionStorage.setItem("type", VerificationType.ForgotPassword.toString()); sessionStorage.setItem("expiration", expiration); sessionStorage.setItem("callbackURL", callbackURL); sessionStorage.setItem("email", email); router.push("/approval"); } catch (err) { if (err instanceof Error) { setError(err.message); } } finally { setLoading(false); } } return ( <> {loading && }
비밀번호 재설정

{process.env.SITE_NAME} 계정과 연결된 이메일 주소를 입력해주세요.

해당 이메일로 인증번호가 발송되며 아래 입력란에 인증번호를 확인하면 비밀번호 재설정이 가능합니다.


setEmail(e.target.value)} autoComplete="off" />
취소하기
); }