From 7ba24c3a8447ef62d1da79612d2566d1e015f319 Mon Sep 17 00:00:00 2001 From: Gana016 <jayam.ganapathi12@gmail.com> Date: Sun, 7 Mar 2021 13:13:25 +0530 Subject: [PATCH] updated forgot password --- digital-course-file/src/Routes.js | 2 + .../src/user/ForgotPassword.js | 48 +++++++++++++++++++ digital-course-file/src/user/Login.js | 42 ++++++++++++---- digital-course-file/src/user/Signin.js | 6 +++ 4 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 digital-course-file/src/user/ForgotPassword.js diff --git a/digital-course-file/src/Routes.js b/digital-course-file/src/Routes.js index 2f12305..c13c1c7 100644 --- a/digital-course-file/src/Routes.js +++ b/digital-course-file/src/Routes.js @@ -10,6 +10,7 @@ import copyright from './user/copyright' import { Link } from 'react-router-dom' import { Container, Button, Navbar, Nav } from 'react-bootstrap' import fire from './fire' +import ForgotPassword from "./user/ForgotPassword" const Routes = () => { @@ -51,6 +52,7 @@ const Routes = () => { <Route path='/' exact component={Signin} /> <Route path='/signin' exact component={Signin} /> <Route path='/copyright' exact component={copyright} /> + <Route path='/forgot-password' component={ForgotPassword} /> </Switch> <Navbar fixed='bottom' variant='light' bg='light'> <Container className='ml-sm-2'> diff --git a/digital-course-file/src/user/ForgotPassword.js b/digital-course-file/src/user/ForgotPassword.js new file mode 100644 index 0000000..58ea8ae --- /dev/null +++ b/digital-course-file/src/user/ForgotPassword.js @@ -0,0 +1,48 @@ +import React, { useState, useEffect } from 'react' +import { Link } from 'react-router-dom' +import fire from '../fire' +import firebase from 'firebase' + +export default function ForgotPassword() { + const [email, setEmail] = useState('') + const [emailError, setEmailError] = useState('') + const clearErrors = () => { + setEmailError('') + setEmail('') + } + + const handleforgot = () => { + clearErrors() + fire + .auth() + .sendPasswordResetEmail(email) + .catch((e) => { + setEmailError(e.message) + }) + setEmailError('Check your inbox for furthur instructions') + } + return ( + <section className='login'> + <div className='loginContainer'> + <p className='errorMsg'>{emailError}</p> + <label>UserName</label> + <input + type='text' + autoFocus + required + value={email} + onChange={(e) => setEmail(e.target.value)} + ></input> + <div className='btnContainer'> + <button onClick={handleforgot}>Reset Password</button> + <p> + Have an account ?{' '} + <Link to='/signin'> + <span>Sign in</span> + </Link> + </p> + </div> + </div> + </section> + ) +} diff --git a/digital-course-file/src/user/Login.js b/digital-course-file/src/user/Login.js index 579d82d..4512730 100644 --- a/digital-course-file/src/user/Login.js +++ b/digital-course-file/src/user/Login.js @@ -1,6 +1,9 @@ -import React from 'react' +import React, { useState, useEffect } from 'react' import GoogleButton from 'react-google-button' import GithubButton from 'react-github-login-button' +import { Link } from 'react-router-dom' +import Loader from 'react-loader-spinner' + const Login = (props) => { const { @@ -16,7 +19,27 @@ const Login = (props) => { passwordError, googlesignin, githubsignin, + loading, } = props + + useEffect(() => { + if (loading) { + return ( + <> + <div className='centered'> + <Loader + type='Puff' + color='#00BFFF' + height={100} + width={100} + timeout={3000} //3 secs + /> + </div> + </> + ) + } + }, [loading]) + return ( <section className='login'> <div className='loginContainer'> @@ -41,6 +64,9 @@ const Login = (props) => { {hasAccount ? ( <> <button onClick={handleLogin}>Sign In</button> + <div className='w-100 text-center mt-3'> + <Link to='/forgot-password'>Forgot Password</Link> + </div> <p> Don't have an account ?{' '} <span onClick={() => setHasAccount(!hasAccount)}>Sign up</span> @@ -48,25 +74,23 @@ const Login = (props) => { <p></p> <GoogleButton onClick={googlesignin} /> <p></p> - - <GithubButton - onClick={githubsignin} - /> + + <GithubButton onClick={githubsignin} /> </> ) : ( <> <button onClick={handleSignup}>Sign up</button> + <p> Have an account ?{' '} <span onClick={() => setHasAccount(!hasAccount)}>Sign in</span> </p> <p></p> + <GoogleButton onClick={googlesignin} /> <p></p> - - <GithubButton - onClick={githubsignin} - /> + + <GithubButton onClick={githubsignin} /> </> )} </div> diff --git a/digital-course-file/src/user/Signin.js b/digital-course-file/src/user/Signin.js index 1cc6cbb..3462fac 100644 --- a/digital-course-file/src/user/Signin.js +++ b/digital-course-file/src/user/Signin.js @@ -12,6 +12,7 @@ const Signin = () => { const [emailError, setEmailError] = useState('') const [passwordError, setPasswordError] = useState('') const [hasAccount, setHasAccount] = useState(false) + const [loading, setloading] = useState(false) const githubsignin = () => { var provider = new firebase.auth.GithubAuthProvider() @@ -81,7 +82,10 @@ const Signin = () => { setPasswordError('') } + + const handleLogin = () => { + setloading(true) clearErrors() fire .auth() @@ -98,6 +102,7 @@ const Signin = () => { break } }) + setloading(false) } const handleSignup = () => { @@ -155,6 +160,7 @@ const Signin = () => { passwordError={passwordError} googlesignin={googlesignin} githubsignin={githubsignin} + loading={loading} /> )} </div> -- GitLab