2020-03-09 14:49:56 +01:00
|
|
|
import React, { useState, useEffect } from 'react';
|
2020-02-19 13:19:04 +01:00
|
|
|
import { ConnectedPage as Page } from './page';
|
2020-02-19 12:21:04 +01:00
|
|
|
import { login } from '../actions/auth.actions';
|
|
|
|
import { connect } from 'react-redux';
|
|
|
|
|
|
|
|
export function LoginPage({ dispatch, isLoggedIn, history }) {
|
|
|
|
|
|
|
|
const [ formData, setFormData ] = useState({username: '', password: ''});
|
|
|
|
const onUsernameChange = evt => setFormData({ ...formData, username: evt.target.value });
|
|
|
|
const onPasswordChange = evt => setFormData({ ...formData, password: evt.target.value });
|
2020-02-19 12:24:34 +01:00
|
|
|
|
2020-02-19 12:21:04 +01:00
|
|
|
const onSubmit = evt => {
|
|
|
|
evt.preventDefault();
|
|
|
|
const { username, password } = formData;
|
|
|
|
dispatch(login(username, password));
|
2020-03-09 14:49:56 +01:00
|
|
|
};
|
2020-02-19 12:21:04 +01:00
|
|
|
|
|
|
|
useEffect(() => {
|
2020-03-09 14:49:56 +01:00
|
|
|
if (isLoggedIn) history.push('/home');
|
2020-02-19 12:21:04 +01:00
|
|
|
}, [isLoggedIn]);
|
|
|
|
|
|
|
|
return (
|
2020-02-19 12:24:34 +01:00
|
|
|
<Page title="Login">
|
2020-02-19 12:21:04 +01:00
|
|
|
<div className="section">
|
|
|
|
<div className="columns">
|
|
|
|
<div className="column is-4 is-offset-4">
|
|
|
|
<div className="box">
|
|
|
|
<div className="field">
|
|
|
|
<label className="label">Nom d'utilisateur</label>
|
|
|
|
<div className="control">
|
|
|
|
<input
|
|
|
|
value={formData.username}
|
|
|
|
onChange={onUsernameChange}
|
|
|
|
type="text" className="input" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="field">
|
|
|
|
<label className="label">Mot de passe</label>
|
|
|
|
<div className="control">
|
|
|
|
<input
|
|
|
|
value={formData.password}
|
|
|
|
onChange={onPasswordChange}
|
|
|
|
className="input" type="password" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="field is-grouped is-grouped-right">
|
|
|
|
<p className="control">
|
|
|
|
<button onClick={onSubmit}
|
|
|
|
className="button is-primary">
|
|
|
|
Se connecter
|
|
|
|
</button>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Page>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function mapStateToProps({ session }) {
|
|
|
|
return { isLoggedIn: session.isLoggedIn };
|
|
|
|
}
|
|
|
|
|
|
|
|
export const ConnectedLoginPage = connect(mapStateToProps)(LoginPage);
|