Advertisement
Guest User

Untitled

a guest
May 3rd, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import { connect } from 'react-redux';
  3. import { login, logoff } from '../redux/reducers/user/actions';
  4. import { WRONG_CREDS } from '../redux/reducers/user/constants';
  5.  
  6. function dispatchToProps(dispatch){
  7. return {
  8. login: creds => dispatch(login(creds)),
  9. logoff: () => {dispatch(logoff())},
  10. }
  11. }
  12.  
  13. function mapState(state){
  14. return {
  15. isLogged: state.usersReducer.isLogged,
  16. error: state.usersReducer.error,
  17. }
  18. }
  19.  
  20. class MenuConnected extends Component{
  21. constructor(props){
  22. super(props);
  23. this.state = {
  24. loginFormIsVisible: false,
  25. userCreds: {
  26. username: '',
  27. password: '',
  28. },
  29. }
  30. }
  31. showForm(){
  32. this.setState({
  33. loginFormIsVisible: true,
  34. })
  35. }
  36. hideForm(){
  37. this.setState({
  38. loginFormIsVisible: false,
  39. })
  40. }
  41. inputChange(field,val){
  42. const userCreds = {...this.state.userCreds};
  43. userCreds[field] = val;
  44. this.setState({
  45. userCreds: userCreds,
  46. })
  47. }
  48. login(e){
  49. e.preventDefault();
  50. this.props.login({...this.state.userCreds});
  51. }
  52. render(){
  53. return(
  54. <div className='w3-sidebar w3-bar-block w3-border-right'>
  55. {
  56. this.props.isLogged ?
  57. <button
  58. className='w3-bar-item w3-button'
  59. onClick={this.props.logoff}
  60. >
  61. Logoff
  62. </button>
  63. :
  64. this.state.loginFormIsVisible ?
  65. <form className='w3-bar-item' onSubmit={e => this.login(e)}>
  66. <input
  67. className='w3-input'
  68. type='text'
  69. placeholder='Username'
  70. onChange={(e)=>{this.inputChange('username',e.target.value)}}
  71. autoFocus
  72. />
  73. <input
  74. className='w3-input'
  75. type='password'
  76. placeholder='Password'
  77. onChange={(e)=>{this.inputChange('password',e.target.value)}}
  78. />
  79. <button type='submit' className='w3-button'>Login</button>
  80. <button
  81. type='reset'
  82. className='w3-button'
  83. onClick={()=>{this.hideForm()}}
  84. >
  85. Cancel
  86. </button>
  87. {this.props.error.error === WRONG_CREDS ?
  88. <div className='w3-panel w3-center w3-bar-item'>
  89. <label>Wrong username/password</label>
  90. </div>
  91. :
  92. <></>
  93. }
  94. </form>
  95. :
  96. <button
  97. className='w3-bar-item w3-button'
  98. onClick={()=>{this.showForm()}}
  99. >
  100. Login
  101. </button>
  102. }
  103. </div>
  104. )
  105. }
  106. }
  107.  
  108. export default connect(mapState, dispatchToProps)(MenuConnected);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement