chat
165 строк · 7.0 Кб
1import React, {useContext, useState} from 'react';2import {useHttp} from '../../hooks/http.hook';3import {AuthContext} from '../context/AuthContext';4
5import foto from './foto.jpg';6
7import './auth.css';8function Auth () {9const auth = useContext(AuthContext);10const {loading, request} = useHttp();11const [form, setForm] = useState({12num: 0, email: '', password: '', login: '', massage: '', cod: '', info: '', posit: '', tel: ''13});14const [img, setImg] = useState({img: foto});15let ref = React.createRef();16const previewFile = () => {17var file = ref.current.files[0],18reader = new FileReader();19
20reader.onloadend = () => {21setImg({img: reader.result})22}23
24if (file) {25reader.readAsDataURL(file);26} else {27setImg({img: foto})28}29}30
31const changeHandler = event => {32setForm({ ...form, [event.target.name]: event.target.value })33};34
35const authDown = (press) => {36setForm({ ...form, num: press })37};38
39const registerHandler = async () => {40try {41const data = await request('/api/signup', 'POST', {...form});42setForm({ ...form, massage: data.message, num: 0})43} catch (e) {44setForm({ ...form, massage: e.message })45}46}47
48const loginHandler = async () => {49try {50const data = await request('/api/login', 'POST', ({ email: form.email, password: form.password}));51auth.login(data.token, data.id)52setForm({ ...form, massage: data.message })53} catch (e) {54setForm({ ...form, massage: e.message })55}56}57
58if (form.num === 0) {59return (60<div className="auth">61<div className="authLogin">62<form>63<input type="text"64className="inputLogin"65name="email"66placeholder="Email"67onChange={changeHandler}/>68<input type="password"69className="inputPassword"70name="password"71placeholder="Password"72onChange={changeHandler}/>73<input className="buttonLogin"74type="button"75value="Войти"76disabled={loading || form.email === '' || form.password === '' ? true : false}77onClick={loginHandler}/>78</form>79<h3 className="signup" onClick={() =>authDown(1)}> Зарегистрироваться. </h3>80</div>81<div className={form.massage === '' || form.massage === null || form.massage === undefined ? "hidden" : "massage"}>82<h2> {form.massage} </h2>83</div>84</div>85)86}else if(form.num === 1){87return (88<div className="auth">89<div className="authSignup">90<form>91<div className="authPhoto">92<img src={img.img} alt="Image preview..."/>93<div className="file-upload">94<label>95<input96ref={ref}97type="file"98accept="image/*"99onChange={previewFile}100className="file"101/>102<span>Загрузить</span>103</label>104</div>105</div>106<div>107<input type="text"108className="inputLogin"109name="login"110placeholder="Псевдоним"111onChange={changeHandler}/>112<input type="password"113className="inputPassword"114name="password"115placeholder="Пароль"116onChange={changeHandler}/>117<input type="password"118className="inputPassword"119placeholder="Повторите пароль"/>120<input type="text"121className="inputPassword"122name="cod"123placeholder="Код регистрации"124onChange={changeHandler}/>125</div>126<div>127<input type="text"128className="inputLogin"129name="info"130placeholder="Ф.И.О."131onChange={changeHandler}/>132<input type="text"133className="inputPassword"134name="email"135placeholder="Почта"136onChange={changeHandler}/>137<input type="tel"138className="inputPassword"139name="tel"140placeholder="Телефон"141onChange={changeHandler}/>142<input type="text"143className="inputPassword"144name="posit"145placeholder="Должность"146onChange={changeHandler}/>147<input className="buttonLogin"148type="button"149value="Зарегистрироваться"150disabled={loading || form.login === '' || form.password === '' || form.email === '' ? true : false}151onClick={registerHandler}/>152<h3 className="signup" onClick={() =>authDown(0)}> Уже зарегистрированы? </h3>153</div>154</form>155<div className={form.massage === '' || form.massage === null || form.massage === undefined ? "hidden" : "massage"}>156<h2> {form.massage} </h2>157</div>158</div>159</div>160)161}162
163};164
165export default Auth;