source: phonelux-frontend/src/components/LoginRegisterComponents/RegisterFormComponent.js@ e5b84dc

Last change on this file since e5b84dc was e5b84dc, checked in by Marko <Marko@…>, 22 months ago

Prototype version

  • Property mode set to 100644
File size: 5.0 KB
Line 
1import React, { Component } from 'react'
2import profileIcon from "../../images/profileicon.png";
3import "./RegisterFormComponent.css"
4import ErrorIcon from '@mui/icons-material/Error';
5import CheckBoxIcon from '@mui/icons-material/CheckBox';
6import InputFormComponent from './InputFormComponent';
7import { Input } from '@mui/material';
8import axios from 'axios';
9
10
11export class RegisterFormComponent extends Component {
12
13 constructor(props) {
14 super(props)
15
16 this.state = {
17 firstName: '',
18 lastName: '',
19 email: '',
20 password: '',
21 confirmPassword:'',
22 serverResponse: ''
23 }
24 }
25
26 submitHandler = (e) => {
27 e.preventDefault()
28
29 let dataToSend = JSON.stringify({
30 "firstName": this.state.firstName,
31 "lastName": this.state.lastName,
32 "email": this.state.email,
33 "password": this.state.password
34 });
35
36 let config = {
37 method: 'post',
38 url: '/registration',
39 headers: {
40 'Content-Type': 'application/json'
41 },
42 data : dataToSend
43 };
44
45 axios(config)
46 .then((response) => {
47 this.setState({
48 serverResponse: response.data
49 })
50 })
51 .catch((error) => {
52 this.setState({
53 serverResponse: error.response.data
54 })
55 });
56
57 }
58
59 setValue = (e) => {
60 this.setState({
61 [e.target.name]: e.target.value
62 })
63 }
64
65
66 render() {
67
68 const {firstName,lastName,email,password,confirmPassword} = this.state
69
70 return (
71 <div className="registerform-main-div">
72 <div className="registerform-sub-main-div">
73 <div>
74
75 {(() => {
76 if(this.state.serverResponse == '')
77 {
78 return <></>
79 }
80
81 if(this.state.serverResponse != '' && this.state.serverResponse.includes('Error'))
82 {
83 return <div className='registerform-message-wrapper'>
84 <h5 className='registerform-error-message'>{this.state.serverResponse.split(':')[1]}</h5> </div>
85 }
86
87 if(this.state.serverResponse != '' && this.state.serverResponse.includes('token'))
88 {
89 return <div className='registerform-message-wrapper'>
90 <h5 className='registerform-success-message'>Вашата регистрација е во тек. Потврдете на вашата е-маил адреса!</h5> </div>
91 }
92
93 })()}
94
95 <div className="registerform-imgs-div">
96 <div className="registerform-image-container">
97 <img src={profileIcon} alt="profile" className="registerform-profile-img"/>
98 </div>
99 </div>
100
101 <form onSubmit={this.submitHandler}>
102 <h1>Регистрација</h1>
103
104 <div className='registerform-name-lastname'>
105 <InputFormComponent type='text' placeholder='Име' name='firstName' required={true}
106 setValue={this.setValue} errorMessage='Името е задолжително!'/>
107
108 <InputFormComponent type='text' placeholder='Презиме' name='lastName' required={true}
109 setValue={this.setValue} errorMessage='Презимето е задолжително!'/>
110 </div>
111
112 <div className='registerform-email-input'>
113 <InputFormComponent type='email' placeholder='Е-маил адреса' name='email' required={true}
114 setValue={this.setValue} errorMessage='Погрешен формат на е-маил адреса!'/>
115 </div>
116
117 <div className="registerform-password-input">
118 <InputFormComponent type='password' placeholder='Лозинка' name='password'
119 setValue={this.setValue} pattern='^(?=.*[0-9])(?=.*[A-Z])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{8,}$' required={true}
120 errorMessage='Лозинката мора да има должина најмалку 8 карактери,
121 да содржи најмалку една голема буква, еден број и еден посебен знак!'/>
122 </div>
123
124 <div className="registerform-confirm-password-input">
125 <InputFormComponent type='password' placeholder='Потврди лозинка' name='confirmPassword' required={true}
126 pattern={this.state.password}
127 setValue={this.setValue} errorMessage='Лозинките не се исти!'/>
128 </div>
129
130 <div className="registerform-button-wrapper">
131 <button className='registerform-button' type="submit">Регистрирај се</button>
132 </div>
133
134 </form>
135
136 </div>
137
138 </div>
139 </div>
140 );
141 }
142}
143
144export default RegisterFormComponent
Note: See TracBrowser for help on using the repository browser.