Advertisement
Guest User

Untitled

a guest
Jul 1st, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.26 KB | None | 0 0
  1. var commonConfig = require('../../config/common');
  2. var $ = require("jquery");
  3. import React from 'react';
  4. import {connect} from 'react-redux';
  5. import {setUser} from '../actions/userActions';
  6. import {setPopUp, setProgressOverlay} from '../actions/commonActions';
  7. import UserService from '../services/UserService';
  8.  
  9. class User extends React.Component {
  10.  
  11. constructor(props) {
  12. super(props);
  13. this.state = {
  14. email: "",
  15. password: ""
  16. };
  17. this.onChangeEmail = this.onChangeEmail.bind(this);
  18. this.onChangePassword = this.onChangePassword.bind(this);
  19. this.onSignIn = this.onSignIn.bind(this);
  20. this.onSignOut = this.onSignOut.bind(this);
  21. }
  22.  
  23. onChangeEmail(name) {
  24. this.setState({
  25. email: name.target.value
  26. });
  27. }
  28.  
  29.  
  30. onChangePassword(password) {
  31. this.setState({
  32. password: password.target.value
  33. });
  34.  
  35. }
  36.  
  37. onSignIn(e) {
  38. e.preventDefault();
  39.  
  40. if (this.state.email.trim().length <= 0) {
  41. $("input[name='email']").addClass('req');
  42. this.props.setPopUp({
  43. type: 'error',
  44. title: 'Error',
  45. text: 'Empty `Email`'
  46. });
  47. return false;
  48. } else {
  49. $('input[name="email"]').removeClass('req');
  50. }
  51.  
  52. if (this.state.password.trim().length <= 0) {
  53. $("input[name='password']").addClass('req');
  54. this.props.setPopUp({
  55. type: 'error',
  56. title: 'Error',
  57. text: 'Empty `Password`'
  58. });
  59. return false;
  60. } else {
  61. $('input[name="password"]').removeClass('req');
  62. }
  63.  
  64. var token = '';
  65.  
  66. this.props.setProgressOverlay(true);
  67. UserService.signIn(this.state).then((signInResult)=> {
  68. token = signInResult.accessToken;
  69. return UserService.signInByToken(token);
  70. }).then((signInByTokenResult)=> {
  71. localStorage.setItem(commonConfig.Common.tokenName, token);
  72. this.props.setProgressOverlay(false);
  73. this.props.setPopUp({
  74. type: 'ok',
  75. title: 'Success',
  76. text: 'Welcome, ' + signInByTokenResult.nickName + '!'
  77. });
  78. this.props.setUser(signInByTokenResult);
  79. }).catch((error)=> {
  80. this.props.setProgressOverlay(false);
  81. this.props.setPopUp({
  82. type: 'error',
  83. title: 'Sign-in error',
  84. text: error.message
  85. });
  86. });
  87. }
  88.  
  89. onSignOut() {
  90. UserService.signOut();
  91. window.location = '/user';
  92. }
  93.  
  94. render() {
  95. if (this.props.user.currentUser) {
  96. return (
  97. <div className="container">
  98. <div className="container__top-panel inline-blocks-wrapper">
  99. <div className="container__top-panel-title">User profile</div>
  100. <div className="container__top-panel-btn-wrapper">
  101. <a className="btn" onClick={this.onSignOut}>Sign out</a>
  102. </div>
  103. </div>
  104. <div className="container__form">
  105. <p>Welcome back, {this.props.user.currentUser.nickName}</p>
  106. </div>
  107. </div>
  108. );
  109. } else {
  110. return (
  111. <div className="container">
  112. <div className="container__top-panel inline-blocks-wrapper">
  113. <div className="container__top-panel-title">Authorization</div>
  114. </div>
  115. <div className="container__form">
  116. <form className="form-main form-main--user" onSubmit={this.onSignIn}>
  117. <div className="container__form-field">
  118. <label className="container__form-label">Email</label>
  119. <input className="container__form-input" value={this.state.email}
  120. name="email" onChange={(e)=>{this.onChangeEmail(e)}}/>
  121. </div>
  122. <div className="container__form-field">
  123. <label className="container__form-label">Password</label>
  124. <input type="password" className="container__form-input" value={this.state.password}
  125. name="password" onChange={(e)=>{this.onChangePassword(e)}}/>
  126. </div>
  127. <div className="container__form-field">
  128. <input type="submit" className="btn" onSubmit={this.onSignIn} value="Sign in"/>
  129. </div>
  130. </form>
  131. </div>
  132. </div>);
  133. }
  134. }
  135. }
  136.  
  137. function mapStoreProps(store) {
  138. return ({
  139. common: store.common,
  140. user: store.user
  141. });
  142. }
  143.  
  144. const mapDispatchToProps = (dispatch) => ({
  145. setPopUp: (...args) => dispatch(setPopUp(...args)),
  146. setUser: (...args) => dispatch(setUser(...args)),
  147. setProgressOverlay: (...args) => dispatch(setProgressOverlay(...args))
  148. });
  149.  
  150. export default connect((store) => mapStoreProps, mapDispatchToProps)(User);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement