import React, { Component } from "react"; import PropTypes from "prop-types"; import { connect } from "react-redux"; import { login } from "../../actions/authActions"; import { clearMessages } from "../../actions/messageActions"; import { withRouter } from "react-router-dom"; import Snackbar from "../Snackbar"; import Alert from "../Alert"; import Breadcrumbs from "../Breadcrumbs"; import Button from "@mui/material/Button"; import IconButton from "@mui/material/IconButton"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faEye, faEyeSlash } from "@fortawesome/free-solid-svg-icons"; import TextField from "@mui/material/TextField"; import Divider from "@mui/material/Divider"; import InputAdornment from "@mui/material/InputAdornment"; import CircularProgress from "@mui/material/CircularProgress"; import Link from "@mui/material/Link"; import * as Blockly from "blockly"; export class Login extends Component { constructor(props) { super(props); this.state = { redirect: props.location.state ? props.location.state.from.pathname : null, email: "", password: "", snackbar: false, type: "", key: "", message: "", showPassword: false, }; } componentDidMount() { if (this.props.message.id === "LOGIN_FAIL") { this.setState({ email: "", password: "", snackbar: true, key: Date.now(), message: Blockly.Msg.messages_LOGIN_FAIL, type: "error", }); } } componentDidUpdate(props) { const { message } = this.props; if (message !== props.message) { if (message.id === "LOGIN_SUCCESS") { if (this.state.redirect) { this.props.history.push(this.state.redirect); } else { this.props.history.goBack(); } } // Check for login error else if (message.id === "LOGIN_FAIL") { this.setState({ email: "", password: "", snackbar: true, key: Date.now(), message: Blockly.Msg.messages_LOGIN_FAIL, type: "error", }); } } } onChange = (e) => { this.setState({ [e.target.name]: e.target.value }); }; onSubmit = (e) => { e.preventDefault(); const { email, password } = this.state; if (email !== "" && password !== "") { // create user object const user = { email, password, }; this.props.login(user); } else { this.setState({ snackbar: true, key: Date.now(), message: Blockly.Msg.messages_login_error, type: "error", }); } }; handleClickShowPassword = () => { this.setState({ showPassword: !this.state.showPassword }); }; handleMouseDownPassword = (e) => { e.preventDefault(); }; render() { return (
{Blockly.Msg.login_lostpassword}
{Blockly.Msg.login_createaccount} openSenseMap .