import React, { Component } from 'react'; import { Redirect } from 'react-router-dom'; import { Brand, Button, Level, LevelItem, Login, LoginBox, LoginBoxHeader, LoginBoxBody, LoginFooter, LoginHeaderBrand, TextInput, } from '@patternfly/react-core'; import TowerLogo from '../components/TowerLogo'; import api from '../api'; const LOGIN_ERROR_MESSAGE = 'Invalid username or password. Please try again.'; class LoginPage extends Component { constructor (props) { super(props); this.state = { username: '', password: '', error: '', loading: false, }; } componentWillUnmount () { this.unmounting = true; // todo: state management } safeSetState = obj => !this.unmounting && this.setState(obj); handleUsernameChange = value => this.safeSetState({ username: value, error: '' }); handlePasswordChange = value => this.safeSetState({ password: value, error: '' }); handleSubmit = event => { const { username, password } = this.state; event.preventDefault(); this.safeSetState({ loading: true }); api.login(username, password) .catch(error => { if (error.response.status === 401) { this.safeSetState({ error: LOGIN_ERROR_MESSAGE }); } }) .finally(() => { this.safeSetState({ loading: false }); }); } render () { const { username, password, loading, error } = this.state; const { logo, loginInfo } = this.props; // if (api.isAuthenticated()) { // return (); // } return ( {logo ? : } )} footer={{ loginInfo }} > Welcome to Ansible Tower! Please Sign In.
>

{ error }

); } } export default LoginPage;