Created
December 24, 2017 19:03
-
-
Save rodolfopeixoto/80ab724532137b5652a7f3c80b59cd59 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React from 'react'; | |
| import ReactDOM from 'react-dom'; | |
| import './css/reset.css'; | |
| import './css/timeline.css'; | |
| import './css/login.css'; | |
| import { BrowserRouter, Route } from 'react-router-dom'; | |
| import App from './App'; | |
| import Login from './components/Login'; | |
| import Logout from './components/Logout'; | |
| const PrivateRoute = ({ component: Component, ...rest }) => ( | |
| <Route {...rest} render={(props) => ( | |
| localStorage.getItem('auth-token') === null | |
| ? <Login msg='Você precisa estar logado para acessar esse endereço' /> | |
| : <App /> | |
| )} /> | |
| ) | |
| ReactDOM.render( | |
| ( | |
| <BrowserRouter> | |
| <div> | |
| <Route exact path="/" component={Login} /> | |
| <Route path="/" component={Logout} /> | |
| <PrivateRoute path="/timeline" component={App} /> | |
| </div> | |
| </BrowserRouter> | |
| ), | |
| document.getElementById('root') | |
| ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React, { Component } from 'react'; | |
| export default class Login extends Component { | |
| constructor (props) { | |
| super(props); | |
| console.log(this.props.redirectLogin); | |
| this.state = { msg: this.props.msg }; | |
| } | |
| handleSubmit(event) { | |
| event.preventDefault(); | |
| const requestInfo = { | |
| method: 'POST', | |
| body: JSON.stringify({ | |
| login: this.login.value, | |
| senha: this.senha.value | |
| }), | |
| headers: new Headers({ | |
| 'Content-type': 'application/json' | |
| }) | |
| }; | |
| fetch('http://localhost:8080/api/public/login', requestInfo) | |
| .then(response => { | |
| if(response.ok){ | |
| return response.text(); | |
| }else{ | |
| throw new Error('Não foi possível fazer o login.'); | |
| } | |
| }) | |
| .then( token => { | |
| localStorage.setItem('auth-token', token); | |
| this.props.history.push('/timeline'); | |
| }) | |
| .catch(error => { | |
| this.setState({msg: error.message }) | |
| }) | |
| } | |
| render() { | |
| return ( | |
| <div className="login-box"> | |
| <h1 className="header-logo">Instalura</h1> | |
| <span>{this.state.msg}</span> | |
| <form onSubmit={this.handleSubmit.bind(this)}> | |
| <input type="text" ref={(input) => this.login = input}/> | |
| <input type="password" ref={(input) => this.senha = input}/> | |
| <input type="submit" value="login"/> | |
| </form> | |
| </div> | |
| ) | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment