/* Login.jsx — real auth через POST /api/passenger/auth/login. */ function Login({ onLogin }) { const [email, setEmail] = React.useState(""); const [password, setPassword] = React.useState(""); const [errors, setErrors] = React.useState({}); const [loading, setLoading] = React.useState(false); const [authError, setAuthError] = React.useState(""); const validate = () => { const e = {}; if (!email) e.email = "Введіть email"; else if (!email.includes("@")) e.email = "Невірний формат email"; if (!password) e.password = "Введіть пароль"; return e; }; const handleSubmit = async (ev) => { ev.preventDefault(); const e = validate(); setErrors(e); if (Object.keys(e).length > 0) return; setLoading(true); setAuthError(""); try { const res = await window.passengerApi.auth.login(email.trim(), password); // Backend поставив httpOnly cookie passenger_session. onLogin({ actor: res.actor, role: res.role, name: res.name, capabilities: res.capabilities }); } catch (err) { setLoading(false); if (err && err.status === 401) setAuthError("Невірний email або пароль"); else if (err && err.status === 422) setAuthError("Заповніть email і пароль"); else setAuthError("Помилка авторизації: " + ((err && err.message) || "")); } }; return (
PASSENGER_BOOTSTRAP_USERS
або таблиця passenger_users.