// User Login / Sign In page. import { useEffect, useState } from 'react' import { useSelector, useDispatch } from 'react-redux' import { Link as RouterLink } from 'react-router-dom' import PropTypes from 'prop-types' import { Avatar, Button, Card, Checkbox, Container, FormControlLabel, Grid, IconButton, InputAdornment, Link, TextField, Typography } from '@material-ui/core' import { makeStyles } from '@material-ui/core/styles' import LockOutlinedIcon from '@material-ui/icons/LockOutlined' import Visibility from '@material-ui/icons/Visibility' import VisibilityOff from '@material-ui/icons/VisibilityOff' import { login, authDefault, googleLogin, githubLogin } from '../redux/authSlice' import github from '../static/github-mark.png' import google from '../static/google.png' const useStyles = makeStyles((theme) => ({ paper: { marginTop: theme.spacing(24), display: 'flex', flexDirection: 'column', alignItems: 'center', padding: theme.spacing(3, 5) }, avatar: { margin: theme.spacing(1), backgroundColor: theme.palette.primary.main }, form: { width: '100%', // Fix IE 11 issue. marginTop: theme.spacing(1) }, submit: { margin: theme.spacing(2, 0) } })) let url = '' export default function SignIn (props) { const classes = useStyles() const errors = useSelector(state => state.auth.errors) const dispatch = useDispatch() const homeURL = `${window.location.origin}/#/` useEffect(() => { document.title = 'Login - ' + process.env.REACT_APP_NAME if (props.location.search !== '') { const query = new URLSearchParams(props.location.search) url = query.get('url') localStorage.setItem('ard_redurl', url) } else { url = '' } return () => { dispatch(authDefault()) } }, [dispatch, props.location.search]) const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [showPassword, setShowPassword] = useState(false) const handleClickShowPassword = () => setShowPassword(!showPassword) const handleMouseDownPassword = () => setShowPassword(!showPassword) // Function call for normal user login. const handleLogin = () => { dispatch(login({ email: username, password, toUrl: url })) } // Function call for google oAuth login. const handleGoogleLogin = () => { const host = window.location.origin dispatch(googleLogin(host)) } // Function call for github login. const handleGithubLogin = () => { const host = window.location.origin dispatch(githubLogin(host)) } return ( Login | Sign In {/* Display's error messages while logging in */} {errors}
setUsername(e.target.value)} autoFocus /> {showPassword ? : } {/* Handle password visibility */} ) }} type={showPassword ? 'text' : 'password'} id='password' value={password} onChange={e => setPassword(e.target.value)} autoComplete='current-password' /> } label='Remember me' /> Forgot password? New User? Sign Up Or {/* Google oAuth Sign In option */} {/* Github Sign Up option */}
) } SignIn.propTypes = { location: PropTypes.object }