simple login/checkauth/main app components

This commit is contained in:
2025-11-30 00:15:55 +01:00
parent c5241eb155
commit 61a7ab64d1
4 changed files with 96 additions and 52 deletions

View File

@@ -1,29 +1,25 @@
import { useState } from "react";
export default function Login() {
const [username, setUsername] = useState("")
const [password, setPassword] = useState("")
const [error, setError] = useState("")
export default function Login({ onLogin }) {
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");
const [error, setError] = useState("");
async function handleSubmit(e) {
async function handleSubmit(e) {
e.preventDefault();
setError("");
const device_id = crypto.randomUUID(); // browser-native UUID
const device_id = "147ac10b-58cc-4372-a567-0e02b2c3d479" ;
try {
const res = await fetch("http://localhost:7080/auth/create_refresh", {
method: "POST",
headers: {
"Content-Type": "application/json",
"User-Agent": "react-app" // optional
"User-Agent": "react-app",
},
credentials: "include", // lets cookies like PHPSESSID flow if server sets them
body: JSON.stringify({
username,
password,
device_id
}),
credentials: "include",
body: JSON.stringify({ username, password, device_id }),
});
if (!res.ok) {
@@ -31,34 +27,33 @@ export default function Login() {
return;
}
const data = await res.text();
console.log("Login success:", data);
// store tokens/responses where you want (context/localStorage/etc.)
//const data = await res.json(); // server returns short-lived token
//localStorage.setItem("access_token", data.access_token);
if (onLogin) onLogin(); // notify App to show MainApp
} catch (err) {
console.error(err);
setError("Network error.");
}
}
return (
<form onSubmit={handleSubmit} style={{ display: "flex", flexDirection: "column", width: "200px" }}>
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="Username"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
<input
type="password"
placeholder="Password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
<button type="submit">Login</button>
{error && <p style={{ color: "red" }}>{error}</p>}
</form>
);
}
}