feat(login): POP 모드 토글 추가 - 로그인 시 POP/PC 진입 선택
로그인 폼에 POP 모드 Switch 토글을 추가하여 현장 작업자가 로그인 시점에서 POP 화면으로 직접 진입할 수 있도록 한다. 토글 상태는 localStorage에 저장되어 다음 로그인 시 유지된다. [백엔드] - 로그인 응답에 popLandingPath 추가 (getPopMenuList 재사용) - AdminService/paramMap 변수 스코프 버그 수정 (try 블록 내부 선언 -> 외부로 이동) [프론트엔드] - useLogin: isPopMode 상태 + localStorage 연동 + POP 분기 라우팅 - LoginForm: POP 모드 Switch 토글 UI (Monitor 아이콘) - POP 미설정 시 에러 메시지 표시 후 로그인 중단 - LoginResponse 타입에 popLandingPath 필드 추가
This commit is contained in:
@@ -2,7 +2,8 @@ import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Label } from "@/components/ui/label";
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
import { Eye, EyeOff, Loader2 } from "lucide-react";
|
||||
import { Switch } from "@/components/ui/switch";
|
||||
import { Eye, EyeOff, Loader2, Monitor } from "lucide-react";
|
||||
import { LoginFormData } from "@/types/auth";
|
||||
import { ErrorMessage } from "./ErrorMessage";
|
||||
|
||||
@@ -11,9 +12,11 @@ interface LoginFormProps {
|
||||
isLoading: boolean;
|
||||
error: string;
|
||||
showPassword: boolean;
|
||||
isPopMode: boolean;
|
||||
onInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
||||
onSubmit: (e: React.FormEvent) => void;
|
||||
onTogglePassword: () => void;
|
||||
onTogglePop: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -24,9 +27,11 @@ export function LoginForm({
|
||||
isLoading,
|
||||
error,
|
||||
showPassword,
|
||||
isPopMode,
|
||||
onInputChange,
|
||||
onSubmit,
|
||||
onTogglePassword,
|
||||
onTogglePop,
|
||||
}: LoginFormProps) {
|
||||
return (
|
||||
<Card className="border-0 shadow-xl">
|
||||
@@ -82,6 +87,19 @@ export function LoginForm({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* POP 모드 토글 */}
|
||||
<div className="flex items-center justify-between rounded-lg border border-slate-200 bg-slate-50 px-3 py-2.5">
|
||||
<div className="flex items-center gap-2">
|
||||
<Monitor className="h-4 w-4 text-slate-500" />
|
||||
<span className="text-sm text-slate-600">POP 모드</span>
|
||||
</div>
|
||||
<Switch
|
||||
checked={isPopMode}
|
||||
onCheckedChange={onTogglePop}
|
||||
disabled={isLoading}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* 로그인 버튼 */}
|
||||
<Button
|
||||
type="submit"
|
||||
|
||||
Reference in New Issue
Block a user