social1986

Untitled

Jan 11th, 2019
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from 'react'
  2. import { Link, withRouter, Redirect } from 'react-router-dom';
  3. import $ from 'jquery';
  4.  
  5. export default class Register extends React.Component {
  6.     constructor(props) {
  7.         super(props);
  8.         this.state = {
  9.             user: {
  10.                 username: '',
  11.                 password: '',
  12.                 confirmPassword: '',
  13.                 email: ''
  14.             },
  15.             redirect: false
  16.         };
  17.  
  18.         this.handleChange = this.handleChange.bind(this);
  19.         this.handleSubmit = this.handleSubmit.bind(this);
  20.     }
  21.  
  22.     renderRedirect = () => {
  23.         if (this.state.redirect) {
  24.             return <Redirect to='/login' />
  25.         }
  26.     }
  27.  
  28.     handleChange(event) {
  29.         let user = this.state.user;
  30.  
  31.         let name = event.target.name;
  32.         let value = event.target.value;
  33.         user[name] = value;
  34.  
  35.         this.setState({ user })
  36.     }
  37.  
  38.     handleSubmit(event) {
  39.         console.log(this.state.user)
  40.         event.preventDefault();
  41.  
  42.         let data = JSON.stringify({
  43.             username: this.state.user.username,
  44.             password: this.state.user.password,
  45.             confirmPassword: this.state.user.confirmPassword,
  46.             email: this.state.user.email
  47.         });
  48.  
  49.         $.ajax({
  50.             url: '/api/accounts/register',  
  51.             type: 'post',
  52.             contentType: 'application/json',
  53.             data: data,
  54.             success: function (result) {
  55.                 alert(result);
  56.                 this.setState({
  57.                     redirect: true
  58.                 })
  59.             }.bind(this),
  60.             error: function (result) {
  61.                 alert('Error')
  62.             }
  63.         })
  64.     }
  65.  
  66.     render() {
  67.         return (
  68.             <div>
  69.                 {this.renderRedirect()}
  70.                 <h1 className='text-center mb-5'>Register</h1>
  71.  
  72.                 <form onSubmit={this.handleSubmit} className='mx-auto w-50'>
  73.                     <div className='form-group'>
  74.                         <label>Username:</label>
  75.                         <input required type="text" name='username' value={this.state.user.username} onChange={this.handleChange} id='username' className='form-control mb-3' placeholder='At least 5 characters, including UPPER/lowercase and numbers' pattern='^(?=.{5,20}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$' />
  76.                     </div>
  77.                     <div className='form-group'>
  78.                         <label>Password:</label>
  79.                         <input required type="password" name='password' value={this.state.user.password} onChange={this.handleChange} className='form-control  mb-3' placeholder='Password...' />
  80.                     </div>
  81.                     <div className='form-group'>
  82.                         <label>Confirm Password:</label>
  83.                         <input required type="password" name='confirmPassword' value={this.state.user.confirmPassword} onChange={this.handleChange} className='form-control  mb-3' placeholder='Confirm Password...' />
  84.                     </div>
  85.                     <div className='form-group'>
  86.                         <label>Email:</label>
  87.                         <input required type="email" name='email' value={this.state.user.email} onChange={this.handleChange} className='form-control mb-3' placeholder='Email...' />
  88.                     </div>
  89.                     <div className='mt-4 d-flex justify-content-around'>
  90.                         <input type="submit" value="Register" className='btn btn-primary' />
  91.  
  92.                         <div>If you have an account please <Link to='/login' id='login' className='btn btn-outline-success  ' >Login</Link></div>
  93.  
  94.                     </div>
  95.                 </form>
  96.  
  97.             </div>
  98.         );
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment