auth.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import React, { Component } from "react";
  2. import { connect } from 'react-redux';
  3. import { Redirect } from 'react-router-dom';
  4. import { auth, register } from '../actions/auth';
  5. import {SignUpForm} from '../components/auth/signUp';
  6. import {SignInForm} from '../components/auth/signIn';
  7. import Loader from '../components/loader';
  8. class Auth extends Component {
  9. state = { auth: true };
  10. toggleAuth = () => this.setState(prevState => ({ auth: !prevState.auth}));
  11. render() {
  12. const { auth } = this.state;
  13. const { user } = this.props
  14. if(user)
  15. {if(Object.keys(user).length !== 0 && !user.role && !user.doctor) {
  16. return <Redirect to="/user" />
  17. }
  18. if(Object.keys(user).length !== 0 && user.role && !user.doctor) {
  19. return <Redirect to="/admin" />
  20. }
  21. if(Object.keys(user).length !== 0 && user.doctor && !user.role) {
  22. return <Redirect to="/reviews" />
  23. }
  24. }
  25. return (
  26. <div className="main">
  27. <div className="auth-wrapper">
  28. <Loader flag={this.props.isFetching}>
  29. <div className="auth">
  30. <div className="auth__content">
  31. { auth ? (
  32. // <Loader flag={this.props.isFetching}>
  33. <SignInForm error={this.props.errorFromAuth} submitHandler={this.props.auth} />
  34. // {/* </Loader> */}
  35. ) : (
  36. // <Loader flag={this.props.isFetching}>
  37. <SignUpForm
  38. error={this.props.errorFromAuth}
  39. submitHandler={this.props.register}
  40. successRegister={this.props.successRegister}
  41. />
  42. // {/* </Loader> */}
  43. )}
  44. <div className="auth__additional-content">
  45. {auth ? (
  46. <p className="auth__text">
  47. У вас есть акаунт ? {" "}
  48. <span className="auth__toggle-span" onClick={this.toggleAuth}>
  49. Зарегистрироваться
  50. </span>
  51. </p>
  52. ) : (
  53. <p className="auth__text">
  54. У меня есть акаунт{" "}
  55. <span className="auth__toggle-span" onClick={this.toggleAuth}>
  56. Войти
  57. </span>
  58. </p>
  59. )}
  60. </div>
  61. </div>
  62. </div>
  63. </Loader>
  64. </div>
  65. </div>
  66. );
  67. }
  68. }
  69. const mapStateToProps = state => ({
  70. user: state.auth.user,
  71. isFetching: state.auth.isFetching,
  72. errorFromAuth: state.auth.error,
  73. successRegister: state.auth.successRegister
  74. })
  75. export default connect(
  76. mapStateToProps,
  77. { auth,register }
  78. )(Auth);