From 6720a5ed4639d4e7de72f8fb8420858c186ce681 Mon Sep 17 00:00:00 2001 From: Macbook Date: Mon, 15 Jun 2026 13:21:42 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/LoginModal.tsx | 15 ++++++++------- frontend/src/components/SplashScreen.tsx | 10 ++++++---- frontend/src/utils/loginDefaults.ts | 23 +++++++++++++++++++++++ 3 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 frontend/src/utils/loginDefaults.ts diff --git a/frontend/src/components/LoginModal.tsx b/frontend/src/components/LoginModal.tsx index a9c6cd3..268024e 100644 --- a/frontend/src/components/LoginModal.tsx +++ b/frontend/src/components/LoginModal.tsx @@ -4,9 +4,10 @@ import React, { useEffect, useState } from 'react'; import { loginUser, type LoginResponse } from '../utils/backendApi'; import AppPopup from './AppPopup'; - -const DEFAULT_USERNAME = 'admin'; -const DEFAULT_PASSWORD = 'admin'; +import { + getLoginDefaultPassword, + getLoginDefaultUsername, +} from '../utils/loginDefaults'; interface Props { open: boolean; @@ -15,15 +16,15 @@ interface Props { } const LoginModal: React.FC = ({ open, onClose, onSuccess }) => { - const [username, setUsername] = useState(DEFAULT_USERNAME); - const [password, setPassword] = useState(DEFAULT_PASSWORD); + const [username, setUsername] = useState(() => getLoginDefaultUsername()); + const [password, setPassword] = useState(() => getLoginDefaultPassword()); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); useEffect(() => { if (!open) return; - setUsername(DEFAULT_USERNAME); - setPassword(DEFAULT_PASSWORD); + setUsername(getLoginDefaultUsername()); + setPassword(getLoginDefaultPassword()); setError(null); setLoading(false); }, [open]); diff --git a/frontend/src/components/SplashScreen.tsx b/frontend/src/components/SplashScreen.tsx index 019b1b8..dfb5443 100644 --- a/frontend/src/components/SplashScreen.tsx +++ b/frontend/src/components/SplashScreen.tsx @@ -3,11 +3,13 @@ */ import React, { useState } from 'react'; import { loginUser, type LoginResponse } from '../utils/backendApi'; +import { + getLoginDefaultPassword, + getLoginDefaultUsername, +} from '../utils/loginDefaults'; import SplashConceptBackdrop from './splash/SplashConceptBackdrop'; import '../styles/splashScreen.css'; -const DEFAULT_USERNAME = 'admin'; -const DEFAULT_PASSWORD = 'admin'; const APP_VERSION = '1.0.3'; interface Props { @@ -16,8 +18,8 @@ interface Props { } const SplashScreen: React.FC = ({ onLoginSuccess, onGuest }) => { - const [username, setUsername] = useState(DEFAULT_USERNAME); - const [password, setPassword] = useState(DEFAULT_PASSWORD); + const [username, setUsername] = useState(() => getLoginDefaultUsername()); + const [password, setPassword] = useState(() => getLoginDefaultPassword()); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); diff --git a/frontend/src/utils/loginDefaults.ts b/frontend/src/utils/loginDefaults.ts new file mode 100644 index 0000000..d31c4cf --- /dev/null +++ b/frontend/src/utils/loginDefaults.ts @@ -0,0 +1,23 @@ +import { isDesktop } from './platform'; + +export const DEV_LOGIN_USERNAME = 'admin'; +export const DEV_LOGIN_PASSWORD = 'admin123!!'; + +/** 로컬 dev·localhost·Desktop — 로그인 폼 admin / admin123!! 자동 입력 */ +export function shouldPrefillLoginCredentials(): boolean { + if (isDesktop()) return true; + if (import.meta.env.DEV) return true; + if (typeof window !== 'undefined') { + const host = window.location.hostname; + if (host === 'localhost' || host === '127.0.0.1') return true; + } + return false; +} + +export function getLoginDefaultUsername(): string { + return shouldPrefillLoginCredentials() ? DEV_LOGIN_USERNAME : ''; +} + +export function getLoginDefaultPassword(): string { + return shouldPrefillLoginCredentials() ? DEV_LOGIN_PASSWORD : ''; +}