guild_front/src/components/Auth/AuthForPartners.js
2021-08-18 18:16:57 +03:00

156 lines
6.0 KiB
JavaScript

import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { auth } from '../../redux/outstaffingSlice';
import { loading } from '../../redux/loaderSlice';
import style from './AuthForPartners.module.css';
import ellipse from '../../images/ellipse.png';
import arrow from '../../images/arrow__login_page.png';
import medium from '../../images/medium_male_big.png';
import cross from '../../images/cross.png';
import text from '../../images/Body_Text.png';
import align from '../../images/align-left.png';
import phone from '../../images/phone.png';
import telegram from '../../images/telegram.png';
import vector from '../../images/Vector_Smart_Object.png';
import vectorBlack from '../../images/Vector_Smart_Object_black.png';
import { fetchAuth } from '../../server/server'
import { useSelector } from 'react-redux'
import { selectAuth } from '../../redux/outstaffingSlice';
import { selectIsLoading } from '../../redux/loaderSlice';
import { Redirect, Link } from 'react-router-dom';
import { Loader } from '../Loader/Loader'
import { withSwalInstance } from 'sweetalert2-react';
import swal from 'sweetalert2';
import { Footer } from '../Footer/Footer'
const SweetAlert = withSwalInstance(swal);
const AuthForPartners = () => {
const dispatch = useDispatch()
const isAuth = useSelector(selectAuth)
const isLoading = useSelector(selectIsLoading)
const [username, setUsername] = useState('')
const [password, setPassword] = useState('')
const [error, setError] = useState(null);
if(isAuth) {
return <Redirect to='/' />
}
return (
<section className={style.partners}>
<div className={style.partners__background}>
<img className={style.vector} src={vector} alt="" />
<img className={style.vectorBlack} src={vectorBlack} alt="" />
<div className="container">
<div className="row">
<div className="col-12 col-xl-6">
<div className={style.partners__box}>
<h2 className={style.partners__title}>
Войти в <span>систему</span>
</h2>
<div className={style.partners__partners}>
<img src={ellipse} alt="" />
<span>Для партнеров</span>
</div>
<form className={style.partners__form}>
<label htmlFor="login">Ваш логин:</label>
<input id="login" type="text" placeholder="Логин"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
<label htmlFor="password">Пароль:</label>
<input id="password" type="password" placeholder="Пароль"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
{ error && <div className={style.form__error}>
<SweetAlert
show={!!error}
title="Ошибка"
text={error}
onConfirm={() => setError(null)}
/>
</div> }
<div className={style.form__buttons}>
<button
className={style.form__btn}
onClick={!isLoading ? (e) => {
e.preventDefault();
dispatch(loading(true))
fetchAuth({
username,
password,
dispatch: ()=> {
dispatch(auth(true))
dispatch(loading(false))
},
catchError: () => {
setError('Некорректные данные для входа')
dispatch(loading(false))
}
})
} : ()=>{}}
>
{ isLoading ? <Loader /> : 'Войти' }
</button>
<button className={`${style.form__btn__dev} ${style.auth__link}`}>
<Link to='/authdev'>Для разработчиков</Link>
</button>
</div>
</form>
</div>
</div>
<div className="col-xl-2">
<img className={style.partners__arrow} src={arrow} alt="" />
</div>
<div className="col-12 col-xl-4">
<div className={style.partners__info}>
<div className={style.partners__info__box}>
<img src={medium} alt="" />
<h3>
Frontend разработчик,
<br /> Middle
</h3>
</div>
<div className={style.partners__info__container}>
<div className={style.partners__info__img}>
<div>
<img className="cross" src={cross} alt="" />
</div>
<div>
{/* <img className={style.specialists} src={specialists} alt="" /> */}
<p className={style.specialists}>20 Специалистов</p>
</div>
</div>
<ul className={style.info__list}>
<li className={style.info__list__item}>Ruby on Rails</li>
<li className={style.info__list__item}>PHP</li>
<li className={style.info__list__item}>Python</li>
<li className={style.info__list__item}>Vue.js</li>
<li className={style.info__list__item}>React. JS</li>
</ul>
</div>
<img className={style.img__text} src={text} alt="" />
</div>
</div>
</div>
<Footer />
</div>
</div>
</section>
);
};
export default AuthForPartners;