feat: add login component and user config

This commit is contained in:
2025-08-10 03:43:08 -06:00
parent 512e454b15
commit 99963f067c
3 changed files with 146 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ import WorkflowList from "./Workflow_List";
import DeviceList from "./Device_List";
import ScriptList from "./Script_List";
import ScheduledJobsList from "./Scheduled_Jobs_List";
import Login from "./Login.jsx";
import { io } from "socket.io-client";
@@ -86,6 +87,31 @@ export default function App() {
const [tabMenuAnchor, setTabMenuAnchor] = useState(null);
const [tabMenuTabId, setTabMenuTabId] = useState(null);
const fileInputRef = useRef(null);
const [user, setUser] = useState(null);
useEffect(() => {
const session = localStorage.getItem("borealis_session");
if (session) {
try {
const data = JSON.parse(session);
if (Date.now() - data.timestamp < 3600 * 1000) {
setUser(data.username);
} else {
localStorage.removeItem("borealis_session");
}
} catch {
localStorage.removeItem("borealis_session");
}
}
}, []);
const handleLoginSuccess = (username) => {
setUser(username);
localStorage.setItem(
"borealis_session",
JSON.stringify({ username, timestamp: Date.now() })
);
};
useEffect(() => {
const saved = localStorage.getItem(LOCAL_STORAGE_KEY);
@@ -386,6 +412,14 @@ export default function App() {
);
}
};
if (!user) {
return (
<ThemeProvider theme={darkTheme}>
<CssBaseline />
<Login onLogin={handleLoginSuccess} />
</ThemeProvider>
);
}
return (
<ThemeProvider theme={darkTheme}>