blob: bd37e2aecaf7b5edc1e8adaa8ab24a7904c84133 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import React, { Component } from 'react';
import { connect } from 'dva';
import { Alert } from 'antd';
import Login from '../../components/Login';
import styles from './Login.less';
const { UserName, Password, Submit } = Login;
@connect(({ login, loading }) => ({
login,
submitting: loading.effects['login/login'],
}))
export default class LoginPage extends Component {
handleSubmit = (err, values) => {
if (!err) {
this.props.dispatch({
type: 'login/login',
payload: {
...values,
},
});
}
}
renderMessage = (content) => {
return (
<Alert style={{ marginBottom: 24 }} message={content} type="error" showIcon />
);
}
render() {
const { login, submitting } = this.props;
return (
<div className={styles.main}>
<Login
onSubmit={this.handleSubmit}
>
{
login.status === 'error' &&
!login.submitting &&
this.renderMessage('Invalid user or password')
}
<UserName name="userName" placeholder="User Name" />
<Password name="password" placeholder="Password" />
<Submit loading={submitting}>Login</Submit>
</Login>
</div>
);
}
}