import {useEffect, useState} from 'react' import {signIn} from 'next-auth/client' import {useRouter} from 'next/router' import PropTypes from 'prop-types' import Link from 'next/link' import { Box, Button, Container, FormControl, IconButton, Input, InputAdornment, InputLabel, LinearProgress, Snackbar, Typography } from '@material-ui/core' import {Visibility, VisibilityOff} from '@material-ui/icons' import MuiAlert from '@material-ui/lab/Alert' import {Google} from '@icons-pack/react-simple-icons' import {validateEmail} from '../../lib/utils/emails' import LoginProvider from './login-provider' const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000' const PROVIDERS = [ { id: 'google', title: 'Google', icon: } ] function Alert(props) { return } function Koneksyon({detay, tit, soutit, titGwose, chimen}) { const [loginError, setError] = useState('') const [credentials, setCredentials] = useState({username: '', password: ''}) const [showPassword, setShowPassword] = useState(false) const [loading, setLoading] = useState(false) const [open, setOpen] = useState(true) const router = useRouter() const handleUpdate = update => { setCredentials({...credentials, ...update}) } const handleClick = async () => { if (!validateEmail(credentials.username) || credentials.password === '') { return } setLoading(true) const response = await signIn('credentials', { callbackUrl: `${siteUrl}${chimen}`, redirect: false, ...credentials }) if (response.error) { setError(response.error) setLoading(false) } else if (response.ok) { setLoading(false) router.push(chimen) } } const handleClose = (event, reason) => { if (reason === 'clickaway') { return } setOpen(false) setError('') } useEffect(() => { if (loginError) { setOpen(true) } return () => { setLoading(false) } }, [loginError]) const handleClickShowPassword = () => { setShowPassword(!showPassword) } const handleMouseDownPassword = event => { event.preventDefault() } const handleKeyUp = event => { if (event.keyCode === 13) { handleClick() } } return ( {tit && ( {tit} {soutit && ( {soutit} )} )} Email handleUpdate({username: event.target.value})} onKeyUp={handleKeyUp} /> Mot de passe {showPassword ? : } } onChange={event => handleUpdate({password: event.target.value})} onKeyUp={handleKeyUp} /> {loading && } {detay && ( Pour obtenir un accès, faites-en la demande 📩 kontak@o-k-i.net )} {PROVIDERS.map(({id, title, icon}) => ( ))} {loginError && ( {loginError} )} ) } Koneksyon.defaultProps = { detay: false, tit: null, soutit: null, titGwose: 5 } Koneksyon.propTypes = { detay: PropTypes.bool, tit: PropTypes.string, soutit: PropTypes.string, titGwose: PropTypes.number, chimen: PropTypes.string.isRequired } export default Koneksyon