//@flow import React from "react"; import { translate } from "react-i18next"; import { Image, ErrorNotification, InputField, SubmitButton, UnauthorizedError } from "@scm-manager/ui-components"; import classNames from "classnames"; import injectSheet from "react-jss"; const styles = { avatar: { marginTop: "-70px", paddingBottom: "20px" }, avatarImage: { border: "1px solid lightgray", padding: "5px", background: "#fff", borderRadius: "50%", width: "128px", height: "128px" }, avatarSpacing: { marginTop: "5rem" } }; type Props = { error?: Error, loading: boolean, login: (username: string, password: string) => void, // context props t: string => string, classes: any }; type State = { username: string, password: string }; class LoginForm extends React.Component { constructor(props: Props) { super(props); this.state = { username: "", password: "" }; } handleSubmit = (event: Event) => { event.preventDefault(); if (this.isValid()) { this.props.login( this.state.username, this.state.password ); } }; handleUsernameChange = (value: string) => { this.setState({ username: value }); }; handlePasswordChange = (value: string) => { this.setState({ password: value }); }; isValid() { return this.state.username && this.state.password; } areCredentialsInvalid() { const { t, error } = this.props; if (error instanceof UnauthorizedError) { return new Error(t("errorNotification.wrongLoginCredentials")); } else { return error; } } render() { const { loading, classes, t } = this.props; return (

{t("login.title")}

{t("login.subtitle")}

{t("login.logo-alt")}
); } } export default injectSheet(styles)(translate("commons")(LoginForm));