source: phonelux-frontend/src/components/LoginRegisterComponents/LoginFormComponent.js@ 895cd87

Last change on this file since 895cd87 was 7e88e46, checked in by Marko <Marko@…>, 22 months ago

Added more components

  • Property mode set to 100644
File size: 3.1 KB
Line 
1import React, { Component } from 'react'
2import profileIcon from "../../images/profileicon.png";
3import EmailIcon from '@mui/icons-material/Email';
4import "./LoginFormComponent.css"
5import InputFormComponent from './InputFormComponent';
6import { Link } from 'react-router-dom';
7import axios from 'axios';
8
9export class LoginFormComponent extends Component {
10
11 constructor(props) {
12 super(props)
13
14 this.state = {
15 email: '',
16 password: '',
17 serverResponse: ''
18 }
19 }
20
21 changeHandler = (e) =>{
22 this.setState({[e.target.name] : e.target.value})
23 }
24
25 submitHandler = (e) => {
26 e.preventDefault()
27 var qs = require('qs');
28 var dataToSend = qs.stringify({
29 'email': this.state.email,
30 'password': this.state.password
31 });
32
33 var config = {
34 method: 'post',
35 url: '/login',
36 headers: {
37 'Content-Type': 'application/x-www-form-urlencoded'
38 },
39 data : dataToSend
40 };
41
42 axios(config)
43 .then((response) => {
44 const {access_token} = response.data
45 // store access token in local storage, redirect to homepage
46 localStorage.setItem('token', access_token)
47 window.location.href="/"
48 })
49 .catch((error) => {
50 this.setState({
51 serverResponse: 'error'
52 })
53 });
54
55 }
56
57 setValue = (e) => {
58 this.setState({
59 [e.target.name]: e.target.value
60 })
61
62 }
63
64
65render() {
66
67 return (
68 <div className="loginform-main-div">
69 <div className="loginform-sub-main-div">
70 <div>
71 {this.state.serverResponse == 'error' ? <div className='loginform-message-wrapper'>
72 <h5 className='loginform-error-message'>Невалидна е-маил адреса или лозинка!</h5></div> : <></>}
73 <div className="loginform-imgs-div">
74 <div className="loginform-image-container">
75 <img src={profileIcon} alt="profile" className="loginform-profile-img"/>
76 </div>
77 </div>
78
79 <form onSubmit={this.submitHandler}>
80 <h1>Најава</h1>
81
82 <div className='loginform-email-input'>
83 <InputFormComponent type='text' placeholder='Е-маил адреса' name='email' required={true}
84 setValue={this.setValue} errorMessage='Полето е задолжително!'/>
85 </div>
86
87 <div className="loginform-password-input">
88 <InputFormComponent type='password' placeholder='Лозинка' name='password'
89 setValue={this.setValue} required={true}
90 errorMessage='Полето е задолжително!'/>
91 </div>
92
93
94 <div className="loginform-button-wrapper">
95 <button className='loginform-button' type="submit">Најави се</button>
96 </div>
97 </form>
98 <p className='register-link'><Link className='registerform-link' to={"/register"}>Регистрирај се</Link></p>
99
100 </div>
101
102 </div>
103 </div>
104 );
105}
106}
107
108
109export default LoginFormComponent
Note: See TracBrowser for help on using the repository browser.