Advertisement
Guest User

Untitled

a guest
Jul 12th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.07 KB | None | 0 0
  1. // StyleSheets
  2. import './../../Shared/css/Color.css';
  3.  
  4. // Scripts
  5. import React from 'react';
  6. import SweetAlert from 'sweetalert-react';
  7. import { NavLink,
  8. Redirect } from 'react-router-dom';
  9. import { connect } from 'react-redux';
  10. import TextUtils from './../../../utilities/TextUtils';
  11. import ValidationUtils from './../../../utilities/ValidationUtils';
  12. import { fetchUser } from './../../../actions/userActions';
  13.  
  14.  
  15. // Common JS Style
  16. let Auth = require('j-toker');
  17. let AuthConfig = require('./../../../api/JtokerConfig');
  18.  
  19. class Login extends React.Component {
  20. constructor(props) {
  21. super(props);
  22. this.state = {
  23. loginEmail: '',
  24. loginPassword: '',
  25. submitBtnText: 'Login',
  26. isSignedIn: false,
  27. errors: null,
  28. isError: false,
  29. success: false
  30. };
  31.  
  32. this.handleInputFieldChange = this.handleInputFieldChange.bind(this);
  33. this.handleSubmit = this.handleSubmit.bind(this);
  34. }
  35.  
  36. componentDidMount() {
  37. this.props.fetchUser();
  38. }
  39.  
  40. handleInputFieldChange(event) {
  41. const target = event.target;
  42. const name = target.name;
  43. this.setState(function () {
  44. return {
  45. [name]: target.value
  46. }
  47. });
  48. }
  49.  
  50.  
  51.  
  52. handleSubmit(event) {
  53. let sanitizeFields = {};
  54. sanitizeFields['email'] = TextUtils.sanitize(this.state.loginEmail);
  55. sanitizeFields['password'] = this.state.loginPassword;
  56.  
  57. this.setState({
  58. submitBtnText: 'Loading...',
  59. });
  60.  
  61. Auth.emailSignIn(sanitizeFields)
  62. .then((response) => {
  63. this.setState(() => {
  64. return {
  65. submitBtnText: 'Login',
  66. loginEmail: '',
  67. loginPassword: '',
  68. isSignedIn: true
  69. }
  70. });
  71. })
  72. .fail((response) => {
  73. this.setState(() => {
  74. return {
  75. submitBtnText: 'Login',
  76. errors: response.data.errors,
  77. isError: true
  78. }
  79. });
  80. });
  81.  
  82.  
  83. event.preventDefault();
  84. }
  85.  
  86. render() {
  87. let loginEmail = this.state.loginEmail;
  88. let loginPassword = this.state.loginPassword;
  89. let errors = this.state.errors;
  90. let isError = this.state.isError;
  91.  
  92. if(this.props.userIsSignedIn) {
  93. window.location.href = '/d/projects';
  94. }
  95.  
  96. return (
  97. <div className="login">
  98.  
  99. {/* Email Signin Error Messages */}
  100. <SweetAlert
  101. show={isError}
  102. type="warning"
  103. title='Ooops!'
  104. text={errors && TextUtils.displayMessages(errors)}
  105. onConfirm={() => this.setState({isError: false})}
  106. />
  107.  
  108. <div className="login__block active" id="l-login">
  109. <div className="login__block__header">
  110. <i className="zmdi zmdi-account-circle" />
  111. Hi there! Please Sign in
  112. </div>
  113.  
  114. <form onSubmit={this.handleSubmit}>
  115. <div className="login__block__body">
  116. <div className="form-group form-group--float form-group--centered">
  117. <input type="text"
  118. name="loginEmail"
  119. className={
  120. ValidationUtils.FieldLengthAndAddClass(loginEmail,
  121. 'form-control form-control--active',
  122. 'form-control')}
  123. autoComplete="off"
  124. value={loginEmail}
  125. onChange={this.handleInputFieldChange}
  126. autoFocus
  127. />
  128. <label>Email</label>
  129. <i className="form-group__bar" />
  130. </div>
  131.  
  132. <div className="form-group form-group--float form-group--centered">
  133. <input type="password"
  134. name="loginPassword"
  135. className={
  136. ValidationUtils.FieldLengthAndAddClass(loginPassword,
  137. 'form-control form-control--active',
  138. 'form-control')}
  139. value={loginPassword}
  140. onChange={this.handleInputFieldChange}
  141. autoComplete="off"
  142. />
  143. <label>Password</label>
  144. <i className="form-group__bar" />
  145. </div>
  146.  
  147. <div className="form-group form-group--float form-group--centered">
  148. <button type="submit"
  149. disabled={!loginEmail || !loginPassword}
  150. className="btn btn-primary btn-block bg-blue-grey btn-lg waves-effect">
  151. {this.state.submitBtnText}
  152. </button>
  153. </div>
  154.  
  155. <p>Don't have an account yet? &nbsp;
  156. <NavLink exact to="/sign-up">Sign Up</NavLink>
  157. </p>
  158.  
  159. <p>
  160. <NavLink exact to="/forgot-password">Forgot password?</NavLink>
  161. </p>
  162.  
  163. </div>
  164. </form>
  165. </div>
  166. </div>
  167. )
  168. }
  169. }
  170.  
  171. const mapStateToProps = (state) => {
  172. return {
  173. user: state.user,
  174. userIsSignedIn: state.userIsSignedIn
  175. }
  176. };
  177.  
  178. const mapDispatchToProps = (dispatch) => {
  179. return {
  180. fetchUser: () => {
  181. dispatch(
  182. fetchUser()
  183. );
  184. }
  185. }
  186. };
  187.  
  188. export default connect(mapStateToProps, mapDispatchToProps)(Login);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement