import * as React from 'react'; import Typography from "@mui/material/Typography"; import WarningAmberIcon from '@mui/icons-material/WarningAmber'; import TextField from "@mui/material/TextField"; import Button from "@mui/material/Button"; import Box from "@mui/material/Box"; import api from "../app/Api"; import routes from "./routes"; import session from "../app/Session"; import {NavLink} from "react-router-dom"; import AvatarBox from "./AvatarBox"; import {useTranslation} from "react-i18next"; import {useState} from "react"; const Login = () => { const { t } = useTranslation(); const [error, setError] = useState(""); const handleSubmit = async (event) => { event.preventDefault(); const data = new FormData(event.currentTarget); const user = { username: data.get('username'), password: data.get('password'), } try { const token = await api.login(config.baseUrl, user); if (token) { console.log(`[Login] User auth for user ${user.username} successful, token is ${token}`); session.store(user.username, token); window.location.href = routes.app; } else { console.log(`[Login] User auth for user ${user.username} failed, access denied`); setError(t("Login failed: Invalid username or password")); } } catch (e) { console.log(`[Login] User auth for user ${user.username} failed`, e); if (e && e.message) { setError(e.message); } else { setError(t("Unknown error. Check logs for details.")) } } }; if (!config.enableLogin) { return ( {t("Login is disabled")} ); } return ( {t("Sign in to your ntfy account")} {error && {error} } {config.enableResetPassword &&
{t("Reset password")}
} {config.enableSignup &&
{t("Sign up")}
}
); } export default Login;