import React from "react"; import Head from 'next/head'; import Image from 'next/image'; import { connect } from "react-redux"; import { withRouter } from 'next/router'; import { reduxWrapper } from '../store'; import pluralize from 'pluralize-ru'; import { SpinnerCircular } from 'spinners-react'; import jwt from 'jsonwebtoken'; import { Cookies } from 'react-cookie'; import moment from 'moment'; import cookie from 'cookie'; import Header from './components/Header'; import Footer from './components/Footer'; import MainHeader from "./components/MainHeader"; import FormRequest from "./components/FormRequest"; import { sendLoginFormEmail, sendLoginFormPhone, sendSmsCode } from '../actions'; class LoginPage extends React.Component { constructor(props) { super(props); this.state = { email: "", password: "", phone: "", phone_code: "", tab: "email", company: {}, email_error: false, phone_form_step: 1, phone_number_error: false, phone_number_format_error: false, phone_code_error: false, email_login_disabled: true, phone_login_disabled: true, phone_code_submit_disabled: true, phone_code_resend_disabled: true, phone_sms_code_error: false, timer: 0, email_auth_loading: false, phone_check_loading: false, code_check_loading: false, }; this.timer_ref = null; } static getDerivedStateFromProps(nextProps, prevState) { return { company: nextProps.company, }; } _handle_onEmailSubmit = (event) => { event.preventDefault(); const { email, password, email_auth_loading } = this.state; if(!email_auth_loading) { this.setState({ email_auth_loading: true }, () => { sendLoginFormEmail({ email, password, dispatch: this.props.dispatch }) .then(() => { //this.setState({ email_auth_loading: false, }); }) .catch(() => { this.setState({ email_error: true, email_auth_loading: false }); }); }); } } _handle_onPhoneSubmit = (event) => { event.preventDefault(); const { phone, phone_check_loading } = this.state; if(!phone_check_loading) { this.setState({ phone_check_loading: true }, () => { sendLoginFormPhone({ phone }) .then(() => { this.setState({ phone_check_loading: false, phone_number_error: false, timer: 60, phone_form_step: 2, }, () => { this.timer_ref = setInterval(() => { const t = this.state.timer - 1; this.setState({ timer: t, }, () => { if(t === 0) { clearInterval(this.timer_ref); } }); }, 1000); }); }) .catch(() => { this.setState({ phone_number_error: true, phone_check_loading: false }); }); }); } } _handle_onCodeSubmit = (event) => { event.preventDefault(); const { phone, phone_code, code_check_loading } = this.state; if(!code_check_loading) { this.setState({ code_check_loading: true }, () => { sendSmsCode({ dispatch: this.props.dispatch, phone, code: phone_code }) .then(() => { this.setState({ phone_sms_code_error: false, code_check_loading: false }); }) .catch(() => { this.setState({ phone_sms_code_error: true, code_check_loading: false }); }); }); } } _handle_onResendCode = (event) => { this.setState({ phone_sms_code_error: false }, () => { this._handle_onPhoneSubmit(event); }); } _handle_onChangeTab = (tab) => { this.setState({ tab: tab }); } _handle_onEmailChange = (value) => { this.setState({ email: value, email_login_disabled: this._check_fields_disabled([ value, this.state.password ]), email_error: false }); } _handle_onPasswordChange = (value) => { this.setState({ password: value, email_login_disabled: this._check_fields_disabled([ value, this.state.email ]), email_error: false }); } _handle_onPhoneChange = (value) => { const phone_number_format_error = value.length > 1 && (value[0] !== "+" || value[1] !== "7") ? true : false; this.setState({ phone: value, phone_login_disabled: this._check_fields_disabled([ value ]), phone_number_error: false, phone_number_format_error: phone_number_format_error }); } _handle_onPhoneCodeChange = (value) => { this.setState({ phone_code: value, phone_code_submit_disabled: this._check_fields_disabled([ value ]), phone_sms_code_error: false }); } _handle_onRecover = (event) => { event.preventDefault(); this.props.router.push("/recovery"); } _handle_onEmailFormFieldKey = (event) => { const { email_login_disabled } = this.state; if(event.keyCode === 13) { event.preventDefault(); if(!email_login_disabled) { this._handle_onEmailSubmit(event); } } } _check_fields_disabled = (values) => { for(let i in values) { if(values[i] === "") { return true; } } return false; } render() { const { email, password, phone, phone_code, tab, email_error, phone_number_error, phone_code_error, email_login_disabled, phone_login_disabled, phone_form_step, phone_code_submit_disabled, phone_code_resend_disabled, timer, phone_sms_code_error, email_auth_loading, phone_check_loading, code_check_loading, phone_number_format_error } = this.state; return ( ЛК Эволюция автолизинга

Личный кабинет

Войти с помощью

this._handle_onChangeTab("email") }>Электронной почты
this._handle_onChangeTab("phone") }>Номера телефона
{ tab === "email" ? (
this._handle_onEmailChange(event.target.value) } onKeyDown={ this._handle_onEmailFormFieldKey } required={ true }/>
this._handle_onPasswordChange(event.target.value) } onKeyDown={ this._handle_onEmailFormFieldKey } required={ true }/>

{ email_error ? 'Ошибка: Неверный логин или пароль' : `\u00A0` }

) : ( <> { phone_form_step === 1 && ( <>
this._handle_onPhoneChange(event.target.value) } required={ true }/>

{ phone_number_error ? 'Ошибка: нет аккаунта с таким номером телефона' : `\u00A0` }

{ phone_number_format_error ? 'Ошибка: номер должен начинаться на +7' : `\u00A0` }

) } { phone_form_step === 2 && ( <>

На номер +{ phone.replace(/[^0-9.]/g, '') } отправлен код подтверждения.

this._handle_onPhoneCodeChange(event.target.value) } />
{ timer !== 0 ? (

Запросить код повторно можно через: { timer } { pluralize(timer, 'секунд', 'секунду', 'секунды', 'секунд') }

) : ( ) } {/* disabled={ phone_code_resend_disabled }*/}

{ phone_sms_code_error ? 'Ошибка: Вы указали неверный код' : `\u00A0` }

) } ) }