From 5a5d933b2449a8657c192443b88e3a1fd13e9a04 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Mon, 10 Jul 2023 12:18:43 +0100 Subject: [PATCH] google login fix --- .../AuthPages/AuthRedirect/Redirect.jsx | 76 +++++++++---------- src/components/AuthPages/Login/index.jsx | 13 +++- 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/src/components/AuthPages/AuthRedirect/Redirect.jsx b/src/components/AuthPages/AuthRedirect/Redirect.jsx index 32a3c49..340e839 100644 --- a/src/components/AuthPages/AuthRedirect/Redirect.jsx +++ b/src/components/AuthPages/AuthRedirect/Redirect.jsx @@ -15,46 +15,44 @@ function Redirect() { const codeResponse = queryParams.get("code"); useEffect(()=>{ - if(!codeResponse){ - navigate('/login', {replace: true}) + if(!codeResponse){ + navigate('/login', {state: {error: true}}) + return + } + console.log(codeResponse); + /* + POST /token HTTP/1.1 + Host: oauth2.googleapis.com + Content-Type: application/x-www-form-urlencoded + + code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& + client_id=your_client_id& + client_secret=your_client_secret& + redirect_uri=https%3A//oauth2.example.com/code& + grant_type=authorization_code + */ + var reqData = { + auth_type: "GOOGLE", + code: codeResponse, + redirect_uri: process.env.REACT_APP_GOOGLE_REDIRECT_URL, + }; + userApi + .authStart(reqData) + .then((res) => { + if (res.status == 200 && res.data.internal_return >= 0 && res.data.member_id && res.data.uid && res.data.session) { + localStorage.setItem("member_id", `${res.data.member_id}`); + localStorage.setItem("uid", `${res.data.uid}`); + localStorage.setItem("session_token", `${res.data.session}`); + dispatch(updateUserDetails({...res.data, loggedIn:true})); + navigate('/', {replace: true}) return - } - console.log(codeResponse); - /* - POST /token HTTP/1.1 - Host: oauth2.googleapis.com - Content-Type: application/x-www-form-urlencoded - - code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& - client_id=your_client_id& - client_secret=your_client_secret& - redirect_uri=https%3A//oauth2.example.com/code& - grant_type=authorization_code - */ - var reqData = { - auth_type: "GOOGLE", - code: codeResponse, - redirect_uri: process.env.REACT_APP_GOOGLE_REDIRECT_URL, - }; - userApi - .authStart(reqData) - .then((res) => { - if (res.status != 200) { - navigate('/login', {replace: true}) - return; - } - - localStorage.setItem("member_id", `${res.data.member_id}`); - localStorage.setItem("uid", `${res.data.uid}`); - localStorage.setItem("session_token", `${res.data.session}`); - dispatch(updateUserDetails({...res.data, loggedIn:true})); - navigate('/', {replace: true}) - - }) - .catch((error) => { - navigate('/login', {replace: true}) - console.log(error); - }); + } + navigate('/login', {state: {error: true}}) + }) + .catch((error) => { + navigate('/login', {state: {error: true}}) + console.log(error); + }); },[]) return ( diff --git a/src/components/AuthPages/Login/index.jsx b/src/components/AuthPages/Login/index.jsx index 87311d8..f5f6d05 100644 --- a/src/components/AuthPages/Login/index.jsx +++ b/src/components/AuthPages/Login/index.jsx @@ -1,5 +1,5 @@ import React, { useEffect, useLayoutEffect, useState } from "react"; -import { Link, useNavigate } from "react-router-dom"; +import { Link, useNavigate, useLocation } from "react-router-dom"; import linkedInLogo from "../../../assets/images/Linkedin.png"; import appleLogo from "../../../assets/images/apple-black.svg"; import facebookLogo from "../../../assets/images/facebook-4.svg"; @@ -16,6 +16,7 @@ import { updateUserDetails } from "../../../store/UserDetails"; export default function Login() { const dispatch = useDispatch(); + const {state} = useLocation() let [loginType, setLoginType] = useState(''); @@ -105,7 +106,7 @@ export default function Login() { userApi .logInUser(postData) .then((res) => { - if (res.status != 200 || res.data.internal_return < 0) { + if (res.status != 200 || res.data.internal_return < 0 || !res.data.member_id || !res.data.uid || !res.data.session) { // setMsgError("Wrong, email/password"); setLoginError(true); setLoginLoading(false); @@ -175,6 +176,14 @@ export default function Login() { } let loginValue = readCookie('loginType') setLoginType(loginValue) + + if(state?.error){ //check if the login path has an error state indicating any social handle login with error + setMsgError("Unexpected Error, Please try again soon."); + setTimeout(()=>{ + setMsgError(""); + navigate('/login', {replace: true}) + },4000) + } },[])