- 새로고침 시 로그인 해제 오류 해결 및 자동로그인 기능 구현
This commit is contained in:
geonhee-min
2025-12-03 12:59:08 +09:00
parent 3859099074
commit e3091494b1
4 changed files with 108 additions and 39 deletions

View File

@@ -4,7 +4,7 @@ import { Field, FieldError, FieldLabel } from '@/components/ui/field';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { zodResolver } from '@hookform/resolvers/zod';
import React, { useCallback, useState } from 'react';
import React, { useCallback, useEffect, useState } from 'react';
import { Controller, useForm } from 'react-hook-form';
import { useNavigate } from 'react-router-dom';
import { PageRouting } from '@/const/PageRouting';
@@ -15,9 +15,12 @@ import { LoginRequest } from '@/data/request/account/LoginRequest';
import { AccountNetwork } from '@/network/AccountNetwork';
import { toast } from 'sonner';
import { useAuthStore } from '@/store/authStore';
import { Checkbox } from '@/components/ui/checkbox';
import { Label } from '@/components/ui/label';
export default function LoginPage() {
const [isLoading, setIsLoading] = useState<boolean>(false);
const [autoLogin, setAutoLogin] = useState<boolean>(false);
const { login } = useAuthStore();
const navigate = useNavigate();
const accountNetwork = new AccountNetwork();
@@ -30,6 +33,10 @@ export default function LoginPage() {
});
const { id, password } = { id: loginForm.watch('id'), password: loginForm.watch('password') };
useEffect(() => {
localStorage.setItem('autoLogin', `${autoLogin}`)
}, [autoLogin]);
const moveToSignUpPage = useCallback(() => {
navigate(PageRouting["SIGN_UP"].path);
}, []);
@@ -149,7 +156,20 @@ export default function LoginPage() {
)}
>
</Controller>
<div className="flex flex-row gap-2 mt-2">
<Checkbox
className={[
"data-[state=checked]:bg-indigo-500 data-[state=checked]:text-white"
, "data-[state=checked]:outline-none data-[state=checked]:border-0"
].join(' ')}
id="auto-login"
checked={autoLogin}
onCheckedChange={(value) => setAutoLogin(value === true)}
/>
<Label htmlFor="auto-login"> </Label>
</div>
</form>
</CardContent>
<CardFooter
className="w-full flex flex-col items-center gap-5"