Guest User

Untitled

a guest
Nov 15th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. import React from 'react';
  2. import { connect } from 'react-redux'
  3. import { bindActionCreators } from 'redux'
  4. import globalConfig from '../../config'
  5. import ajax from '../../utils/ajax'
  6. import Logger from '../../utils/Logger'
  7. import { Button, message } from 'antd'
  8. import './index.less'
  9. import { loginSuccessCreator } from '../../redux/Login.js'
  10. import { SetAuth } from '../../utils/ajax'
  11.  
  12. const logger = Logger.getLogger('Login')
  13.  
  14. class Login extends React.Component {
  15.  
  16. constructor(props) {
  17. super(props)
  18. this.state = {
  19. username: '', // 当前输入的用户名
  20. password: '', // 当前输入的密码
  21. requesting: false, // 当前是否正在请求服务端接口, 防止重复点击
  22. }
  23. this.handleUsernameInput = this.handleUsernameInput.bind(this)
  24. this.handlePasswordInput = this.handlePasswordInput.bind(this)
  25. this.handleUsernameInput = this.handleUsernameInput.bind(this)
  26. this.handleSubmit = this.handleSubmit.bind(this)
  27. }
  28.  
  29. handleUsernameInput(e) {
  30. this.setState({ username: e.target.value });
  31. };
  32.  
  33. handlePasswordInput(e) {
  34. this.setState({ password: e.target.value });
  35. };
  36.  
  37. /**
  38. * 处理表单的submit事件
  39. *
  40. * @param e
  41. */
  42. async handleSubmit(e) {
  43. // 防止跳转
  44. e.preventDefault();
  45. this.setState({ requesting: true });
  46. const hide = message.loading('Authorizing...', 0);
  47.  
  48. const username = this.state.username;
  49. const password = this.state.password;
  50. logger.debug('username = %s, password = %s', username, password);
  51.  
  52. try {
  53. // 服务端验证
  54. const res = await ajax.login(username, password);
  55. hide();
  56. logger.debug('login validate return: result %o', res);
  57.  
  58. if (res.success) {
  59. message.success('Login Successful!');
  60. this.props.handleLoginSuccess(res.data.data);
  61. } else {
  62. message.error(`Login Failed: ${res.message}, Please Contact Maintainer`);
  63. this.setState({ requesting: false });
  64. }
  65. } catch (exception) {
  66. hide();
  67. message.error(`Incorrect Network: ${exception.message}`);
  68. logger.error('login error, %o', exception);
  69. this.setState({ requesting: false });
  70. }
  71. }
  72.  
  73. render() {
  74. let text = globalConfig.name
  75. if (globalConfig.debug) {
  76. text = "[" + text + "]"
  77. }
  78. return (
  79. <div id="loginDIV">
  80. <div className="login">
  81. <h1>{text}</h1>
  82. <form onSubmit={this.handleSubmit}>
  83. <input className="login-input" type="text" value={this.state.username}
  84. onChange={this.handleUsernameInput} placeholder="Username" required="required" />
  85. <input className="login-input" type="password" value={this.state.password}
  86. onChange={this.handlePasswordInput} placeholder="Password" required="required" />
  87. <button className="btn btn-primary btn-block btn-large"
  88. type="submit" disabled={this.state.requesting}>
  89. Login
  90. </button>
  91. </form>
  92. </div>
  93.  
  94. </div>
  95. );
  96. }
  97.  
  98. }
  99.  
  100. const mapDispatchToProps = (dispatch) => {
  101. return {
  102. handleLoginSuccess: bindActionCreators(loginSuccessCreator, dispatch),
  103. };
  104. };
  105.  
  106. export default connect(null, mapDispatchToProps)(Login);
Add Comment
Please, Sign In to add comment