Skip to content

Instantly share code, notes, and snippets.

@rodolfopeixoto
Created December 24, 2017 19:03
Show Gist options
  • Select an option

  • Save rodolfopeixoto/80ab724532137b5652a7f3c80b59cd59 to your computer and use it in GitHub Desktop.

Select an option

Save rodolfopeixoto/80ab724532137b5652a7f3c80b59cd59 to your computer and use it in GitHub Desktop.
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')
);
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