2022-07-20 15:23:38 +00:00
|
|
|
import React, { useState, useContext } from "react";
|
|
|
|
import { Link as RouterLink } from "react-router-dom";
|
|
|
|
|
|
|
|
import {
|
|
|
|
Avatar,
|
|
|
|
Button,
|
|
|
|
CssBaseline,
|
|
|
|
TextField,
|
|
|
|
Grid,
|
|
|
|
Box,
|
|
|
|
Typography,
|
|
|
|
Container,
|
|
|
|
InputAdornment,
|
|
|
|
IconButton,
|
|
|
|
Link
|
|
|
|
} from '@material-ui/core';
|
|
|
|
|
|
|
|
import { /*LockOutlined,*/ PersonOutlineOutlined, Visibility, VisibilityOff } from '@material-ui/icons';
|
|
|
|
|
|
|
|
import { makeStyles } from "@material-ui/core/styles";
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
import { i18n } from "../../translate/i18n";
|
|
|
|
|
2022-07-20 15:23:38 +00:00
|
|
|
import { AuthContext } from "../../context/Auth/AuthContext";
|
2022-01-06 01:26:15 +00:00
|
|
|
|
|
|
|
// const Copyright = () => {
|
|
|
|
// return (
|
|
|
|
// <Typography variant="body2" color="textSecondary" align="center">
|
|
|
|
// {"Copyleft "}
|
|
|
|
// <Link color="inherit" href="https://github.com/canove">
|
|
|
|
// Canove
|
|
|
|
// </Link>{" "}
|
|
|
|
// {new Date().getFullYear()}
|
|
|
|
// {"."}
|
|
|
|
// </Typography>
|
|
|
|
// );
|
|
|
|
// };
|
|
|
|
|
2022-07-20 15:23:38 +00:00
|
|
|
const useStyles = makeStyles((theme) => ({
|
|
|
|
paper: {
|
|
|
|
marginTop: theme.spacing(8),
|
|
|
|
display: "flex",
|
|
|
|
flexDirection: "column",
|
|
|
|
alignItems: "center",
|
|
|
|
},
|
|
|
|
avatar: {
|
|
|
|
margin: theme.spacing(1),
|
|
|
|
backgroundColor: theme.palette.secondary.main,
|
|
|
|
},
|
|
|
|
form: {
|
|
|
|
width: "100%", // Fix IE 11 issue.
|
|
|
|
marginTop: theme.spacing(1),
|
|
|
|
},
|
|
|
|
submit: {
|
|
|
|
margin: theme.spacing(3, 0, 2),
|
|
|
|
},
|
|
|
|
}));
|
2022-01-06 01:26:15 +00:00
|
|
|
|
|
|
|
const Login = () => {
|
2022-07-20 15:23:38 +00:00
|
|
|
const classes = useStyles();
|
|
|
|
|
|
|
|
const [user, setUser] = useState({ email: "", password: "" });
|
|
|
|
const [showPassword, setShowPassword] = useState(false);
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2022-07-20 15:23:38 +00:00
|
|
|
const { handleLogin } = useContext(AuthContext);
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2022-07-12 12:46:22 +00:00
|
|
|
const handleChangeInput = (e) => {
|
|
|
|
setUser({ ...user, [e.target.name]: e.target.value });
|
|
|
|
};
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2022-07-12 12:46:22 +00:00
|
|
|
const handlSubmit = (e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
handleLogin(user);
|
|
|
|
};
|
2022-01-06 01:26:15 +00:00
|
|
|
|
|
|
|
return (
|
2022-07-20 15:23:38 +00:00
|
|
|
<Container component="main" maxWidth="xs">
|
|
|
|
<CssBaseline />
|
|
|
|
<div className={classes.paper}>
|
|
|
|
|
|
|
|
<Avatar className={classes.avatar} style={{ backgroundColor: "#ec5114" }}>
|
|
|
|
<PersonOutlineOutlined/>
|
|
|
|
</Avatar>
|
|
|
|
|
|
|
|
|
|
|
|
<Typography component="h1" variant="h5">
|
|
|
|
{i18n.t("login.title")}
|
|
|
|
</Typography>
|
|
|
|
<form className={classes.form} noValidate onSubmit={handlSubmit}>
|
|
|
|
<TextField
|
|
|
|
variant="outlined"
|
|
|
|
margin="normal"
|
|
|
|
required
|
|
|
|
fullWidth
|
|
|
|
id="email"
|
|
|
|
label={i18n.t("login.form.email")}
|
|
|
|
name="email"
|
|
|
|
value={user.email}
|
|
|
|
onChange={handleChangeInput}
|
|
|
|
autoComplete="email"
|
|
|
|
autoFocus
|
|
|
|
/>
|
|
|
|
<TextField
|
|
|
|
variant="outlined"
|
|
|
|
margin="normal"
|
|
|
|
required
|
|
|
|
fullWidth
|
|
|
|
name="password"
|
|
|
|
label={i18n.t("login.form.password")}
|
|
|
|
id="password"
|
|
|
|
value={user.password}
|
|
|
|
onChange={handleChangeInput}
|
|
|
|
autoComplete="current-password"
|
|
|
|
type={showPassword ? 'text' : 'password'}
|
|
|
|
InputProps={{
|
|
|
|
endAdornment: (
|
|
|
|
<InputAdornment position="end">
|
|
|
|
<IconButton
|
|
|
|
aria-label="toggle password visibility"
|
|
|
|
onClick={() => setShowPassword((e) => !e)}
|
|
|
|
>
|
|
|
|
{showPassword ? <VisibilityOff /> : <Visibility />}
|
|
|
|
</IconButton>
|
|
|
|
</InputAdornment>
|
|
|
|
)
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
<Button
|
|
|
|
type="submit"
|
|
|
|
fullWidth
|
|
|
|
variant="contained"
|
|
|
|
color="primary"
|
|
|
|
className={classes.submit}
|
|
|
|
>
|
|
|
|
{i18n.t("login.buttons.submit")}
|
|
|
|
</Button>
|
|
|
|
<Grid container>
|
|
|
|
<Grid item>
|
|
|
|
|
|
|
|
<Link
|
|
|
|
href="#"
|
|
|
|
variant="body2"
|
|
|
|
component={RouterLink}
|
|
|
|
to="/signup"
|
|
|
|
>
|
|
|
|
{/* {i18n.t("login.buttons.register")} */}
|
|
|
|
</Link>
|
|
|
|
|
|
|
|
</Grid>
|
|
|
|
</Grid>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
<Box mt={8}>{/* <Copyright /> */}</Box>
|
|
|
|
</Container>
|
2022-01-06 01:26:15 +00:00
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default Login;
|