mirror of
https://github.com/henrywhitaker3/Speedtest-Tracker.git
synced 2025-12-24 06:28:27 +01:00
Added optional authentication
This commit is contained in:
77
resources/js/components/Login.js
vendored
77
resources/js/components/Login.js
vendored
@@ -1,10 +1,11 @@
|
||||
import React, { Component } from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { Container, Row, Form, Toast } from 'react-bootstrap';
|
||||
import { Container, Row, Form, Toast, Modal } from 'react-bootstrap';
|
||||
import { Col } from 'react-bootstrap';
|
||||
import { Button } from 'react-bootstrap';
|
||||
import Axios from 'axios';
|
||||
import { toast } from 'react-toastify';
|
||||
import Cookies from 'js-cookie';
|
||||
|
||||
export default class Login extends Component {
|
||||
constructor(props) {
|
||||
@@ -12,59 +13,75 @@ export default class Login extends Component {
|
||||
|
||||
this.state = {
|
||||
loginEmailInput: '',
|
||||
loginPasswordInput: '',
|
||||
toast: null,
|
||||
loginPasswordInput: ''
|
||||
}
|
||||
}
|
||||
|
||||
updateTextField = (e) => {
|
||||
this.setState({
|
||||
[e.target.id]: e.target.value
|
||||
})
|
||||
}
|
||||
|
||||
login = (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
var data = {
|
||||
email: this.state.loginEmailInput,
|
||||
password: this.state.loginPasswordInput
|
||||
};
|
||||
var url = 'api/auth/login';
|
||||
}
|
||||
|
||||
var url = 'api/auth/login';
|
||||
Axios.post(url, data)
|
||||
.then((resp) => {
|
||||
var token = resp.data;
|
||||
this.props.setToken(token);
|
||||
var token = resp.data.access_token;
|
||||
var expires = (resp.data.expires_in / 60) / 24;
|
||||
Cookies.set('auth', token, { expires: expires })
|
||||
window.location.reload(true);
|
||||
})
|
||||
.catch((err) => {
|
||||
toast.error('Something went wrong. Please try again.')
|
||||
});
|
||||
}
|
||||
|
||||
updateTextField = (e) => {
|
||||
this.setState({
|
||||
[e.target.id]: e.target.value
|
||||
});
|
||||
toggleShow = () => {
|
||||
if(this.state.show) {
|
||||
this.setState({
|
||||
show: false
|
||||
})
|
||||
} else {
|
||||
this.setState({
|
||||
show: true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
var error = this.state.error;
|
||||
var show = this.state.show;
|
||||
|
||||
return (
|
||||
<Container>
|
||||
<Row className="fullscreen align-items-center">
|
||||
<Row>
|
||||
<Col
|
||||
lg={{ span: 4, offset: 4 }}
|
||||
md={{ span: 6, offset: 3 }}
|
||||
sm={{ span: 10, offset: 1 }}
|
||||
xs={{ span: 12 }}
|
||||
className="pb-2 text-center"
|
||||
>
|
||||
<Form onSubmit={this.login}>
|
||||
<Form.Group controlId="loginEmailInput">
|
||||
<Form.Label>Email address</Form.Label>
|
||||
<Form.Control type="email" placeholder="admin@admin.com" onInput={this.updateTextField} required />
|
||||
</Form.Group>
|
||||
<Form.Group controlId="loginPasswordInput">
|
||||
<Form.Label>Password</Form.Label>
|
||||
<Form.Control type="password" onInput={this.updateTextField} required />
|
||||
</Form.Group>
|
||||
<Button variant="primary" type="submit">Login</Button>
|
||||
</Form>
|
||||
<Button variant="primary" onClick={this.toggleShow}>Login</Button>
|
||||
<Modal show={show} onHide={this.toggleShow}>
|
||||
<Modal.Header closeButton>
|
||||
<Modal.Title>Login</Modal.Title>
|
||||
</Modal.Header>
|
||||
<Modal.Body>
|
||||
<Form onSubmit={this.login}>
|
||||
<Form.Group controlId="loginEmailInput">
|
||||
<Form.Label>Email address</Form.Label>
|
||||
<Form.Control type="email" placeholder="admin@admin.com" onInput={this.updateTextField} required />
|
||||
</Form.Group>
|
||||
<Form.Group controlId="loginPasswordInput">
|
||||
<Form.Label>Password</Form.Label>
|
||||
<Form.Control type="password" onInput={this.updateTextField} required />
|
||||
</Form.Group>
|
||||
<Button variant="primary" type="submit">Login</Button>
|
||||
</Form>
|
||||
</Modal.Body>
|
||||
</Modal>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
|
||||
Reference in New Issue
Block a user