diff --git a/packages/ui/src/components/auth/LoginView.tsx b/packages/ui/src/components/auth/LoginView.tsx index dde883d..7caa742 100644 --- a/packages/ui/src/components/auth/LoginView.tsx +++ b/packages/ui/src/components/auth/LoginView.tsx @@ -15,7 +15,7 @@ interface LoginViewProps { const LoginView: Component = (props) => { const [users, setUsers] = createSignal([]) - const [selectedUserId, setSelectedUserId] = createSignal("") + const [username, setUsername] = createSignal("") const [password, setPassword] = createSignal("") const [isLoggingIn, setIsLoggingIn] = createSignal(false) const [isLoadingUsers, setIsLoadingUsers] = createSignal(true) @@ -27,18 +27,16 @@ const LoginView: Component = (props) => { if (api) { const userList = await api.invoke("users:list") setUsers(userList) + // Pre-fill first user if available if (userList.length > 0) { - setSelectedUserId(userList[0].id) + setUsername(userList[0].name) } } } else { - // For web mode, we might need a different way to list users or just show a default - setUsers([{ id: "web-user", name: "Web Explorer" }]) - setSelectedUserId("web-user") + setUsername("web-explorer") } } catch (error) { console.error("Failed to fetch users:", error) - toast.error("Failed to load user list") } finally { setIsLoadingUsers(false) } @@ -46,15 +44,26 @@ const LoginView: Component = (props) => { const handleLogin = async (e: Event) => { e.preventDefault() - if (!selectedUserId()) return + const name = username().trim() + if (!name) return setIsLoggingIn(true) try { if (isElectronHost()) { const api = (window as any).electronAPI if (api) { + // Find user ID by name first + const userList = await api.invoke("users:list") + const user = userList.find((u: UserRecord) => u.name.toLowerCase() === name.toLowerCase()) + + if (!user) { + toast.error(`Identity "${name}" not found`) + setIsLoggingIn(false) + return + } + const result = await api.invoke("users:login", { - id: selectedUserId(), + id: user.id, password: password(), }) @@ -66,9 +75,8 @@ const LoginView: Component = (props) => { } } } else { - // Mock login for web mode toast.success("Web mode access granted") - props.onLoginSuccess({ id: selectedUserId(), name: "Web Explorer" }) + props.onLoginSuccess({ id: "web-user", name: "Web Explorer" }) } } catch (error) { console.error("Login failed:", error) @@ -106,25 +114,19 @@ const LoginView: Component = (props) => {
- setUsername(e.currentTarget.value)} + class="block w-full pl-12 pr-4 py-4 bg-[#1a1a1a] border border-white/5 rounded-2xl text-white appearance-none focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all cursor-text" + list="identity-suggestions" + /> + - {(user) => ( - - )} + {(user) => - -
- -
+