add user possibility to keep loged in
This commit is contained in:
parent
83c1b5685a
commit
c927f3aced
|
|
@ -11,14 +11,15 @@ const Login = () => {
|
||||||
const [email, setEmail] = useState('');
|
const [email, setEmail] = useState('');
|
||||||
const [password, setPassword] = useState('');
|
const [password, setPassword] = useState('');
|
||||||
const [cookies, setCookie] = useCookies(['token']);
|
const [cookies, setCookie] = useCookies(['token']);
|
||||||
|
const [keepMeLoggedIn, setKeepMeLoggedIn] = useState(false);
|
||||||
|
|
||||||
const mutation = useMutation(login, {
|
const mutation = useMutation(login, {
|
||||||
onSuccess: (data: Token) => {
|
onSuccess: (data: Token) => {
|
||||||
setCookie('token', data.token, { path: '/', expires: new Date(data.expiresAt) });
|
setCookie('token', data.token, { path: '/', expires: keepMeLoggedIn ? new Date(data.expiresAt) : undefined });
|
||||||
},
|
},
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
toastError(error as string);
|
toastError(error as string);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||||
|
|
@ -68,6 +69,19 @@ const Login = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex items-center mb-2">
|
||||||
|
<input
|
||||||
|
id="remember_me"
|
||||||
|
name="remember_me"
|
||||||
|
type="checkbox"
|
||||||
|
className="h-4 w-4 text-red focus:ring-red border-gray-300 rounded"
|
||||||
|
checked={keepMeLoggedIn}
|
||||||
|
onChange={(e) => setKeepMeLoggedIn(e.target.checked)}
|
||||||
|
/>
|
||||||
|
<label htmlFor="remember_me" className="ml-2 block text-sm text-white">
|
||||||
|
Se souvenir de moi
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { Token } from '@/types';
|
||||||
import logo from '@assets/images/logo.svg';
|
import logo from '@assets/images/logo.svg';
|
||||||
import { toastError, toastSuccess } from '@controllers/Toasts';
|
import { toastError, toastSuccess } from '@controllers/Toasts';
|
||||||
import { signup } from '@controllers/UserController';
|
import { signup } from '@controllers/UserController';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { Link, useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
@ -23,8 +23,8 @@ export default () => {
|
||||||
<div>
|
<div>
|
||||||
<img className="mx-auto h-20 pb-2 w-auto" src={logo} alt="Groupomania" />
|
<img className="mx-auto h-20 pb-2 w-auto" src={logo} alt="Groupomania" />
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full max-w-md space-y-8 bg-grey rounded-lg p-5">
|
<div className="w-full max-w-md space-y-4 bg-grey rounded-lg p-5">
|
||||||
<form className="m-6 " action="#" method="POST" onSubmit={(e) => onSubmit(e)}>
|
<form className="m-6 mb-0" action="#" method="POST" onSubmit={(e) => onSubmit(e)}>
|
||||||
<div className="-space-y-px rounded-md shadow-sm">
|
<div className="-space-y-px rounded-md shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="lastName" className="sr-only">
|
<label htmlFor="lastName" className="sr-only">
|
||||||
|
|
@ -106,6 +106,11 @@ export default () => {
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<p className="text-center text-sm text-grey-dark">
|
||||||
|
<Link to="/login" className="font-medium text-red-light hover:text-red">
|
||||||
|
Retournez à la page de connexion
|
||||||
|
</Link>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue