google auth fix

This commit is contained in:
Priyatham Sai Chand 2021-04-13 18:12:40 +05:30
parent 6099c144b3
commit 01a1e2ceea
7 changed files with 105 additions and 45 deletions

9
package-lock.json generated
View File

@ -14064,6 +14064,15 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz",
"integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew=="
}, },
"react-google-login": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz",
"integrity": "sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==",
"requires": {
"@types/react": "*",
"prop-types": "^15.6.0"
}
},
"react-is": { "react-is": {
"version": "16.13.1", "version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",

View File

@ -16,6 +16,7 @@
"react": "^17.0.1", "react": "^17.0.1",
"react-bootstrap": "^1.5.2", "react-bootstrap": "^1.5.2",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"react-google-login": "^5.2.2",
"react-lottie": "^1.2.3", "react-lottie": "^1.2.3",
"react-router-dom": "^5.2.0", "react-router-dom": "^5.2.0",
"react-scripts": "^4.0.3", "react-scripts": "^4.0.3",

View File

@ -19,15 +19,16 @@ export default function App() {
useEffect(() => { useEffect(() => {
const checkLoggedIn = async () => { const checkLoggedIn = async () => {
let token = localStorage.getItem("auth-token"); let token = localStorage.getItem("auth-token");
console.log("app js " + token);
if (token == null) { if (token == null) {
localStorage.setItem("auth-token",""); localStorage.setItem("auth-token","");
token =""; token ="";
} }
const tokenRes = await Axios.post( const tokenRes = await Axios.post(
"https://server-locaft.herokuapp.com/users/tokenIsValid", "https://server-locaft.herokuapp.com/users/tokenIsValid",
null, null,
{headers: {"x-auth-token": token }} {headers: {"x-auth-token": token }}
); );
if (tokenRes.data) { if (tokenRes.data) {
const userRes = await Axios.get("https://server-locaft.herokuapp.com/users/", const userRes = await Axios.get("https://server-locaft.herokuapp.com/users/",
@ -40,7 +41,7 @@ export default function App() {
} }
}; };
checkLoggedIn(); checkLoggedIn();
@ -64,7 +65,7 @@ export default function App() {
</UserContext.Provider> </UserContext.Provider>
</BrowserRouter> </BrowserRouter>
</div> </div>
</> </>

View File

@ -1,4 +1,4 @@
import React, {useContext} from 'react'; import React, {useState, useContext} from 'react';
import { useHistory,BrowserRouter, Route, NavLink, Switch,withRouter } from 'react-router-dom'; import { useHistory,BrowserRouter, Route, NavLink, Switch,withRouter } from 'react-router-dom';
import Register from './Register'; import Register from './Register';
import Login from './Login'; import Login from './Login';
@ -7,6 +7,8 @@ import styled, {css} from 'styled-components';
import {Button} from './miscellaneous/Styles'; import {Button} from './miscellaneous/Styles';
import UserContext from "../context/UserContext"; import UserContext from "../context/UserContext";
import {logout} from "./NavBar" import {logout} from "./NavBar"
import { GoogleLogin } from 'react-google-login';
import Axios from "axios";
const BaseApp = styled.div` const BaseApp = styled.div`
display: flex; display: flex;
@ -15,13 +17,13 @@ const BaseApp = styled.div`
`; `;
const AppSide = styled.div` const AppSide = styled.div`
width: 50%; width: 50%;
background-color: #66bfbf; background-color: #66bfbf;
display:flex; display: grid;
flex-direction: column; grid-template-columns: repeat(auto-fit, 300px);
justify-content: flex-end; justify-content: center;
align-items: center;
`; `;
const AppForm = styled.div` const AppForm = styled.div`
@ -140,23 +142,70 @@ const FormTitle = styled.div`
margin-bottom: 50px; margin-bottom: 50px;
`; `;
const responseSuccessGoogle = (response) => {
Axios({
method: 'POST',
url: "http://localhost:5000/users/googlelogin",
data: { idToken: response.tokenId }
}).then(response => {
console.log(response);
})
}
const responseFailGoogle = (response) => {
console.log(response)
}
const LogInContainer = () => { const LogInContainer = () => {
const { userData, setUserData } = useContext(UserContext); const { userData, setUserData } = useContext(UserContext);
const [error, setError] = useState();
const [hasLogged, setHasLogged] = useState(false);
const history = useHistory(); const history = useHistory();
const responsePassGoogle = async (response) => {
try{
const idToken = response.tokenId;
console.log("id token" + idToken);
const googleres = await Axios.post(
"http://server-locaft.herokuapp.com/users/googlelogin",{
idToken: idToken
}
);
setUserData({
token: googleres.data.token,
user: googleres.data.user
});
localStorage.setItem("auth-token",googleres.data.token);
setHasLogged(true);
} catch (err) {
err.response.data.msg && setError(err.response.data.msg);
}
}
return ( return (
<BaseApp> <BaseApp>
<AppSide> <AppSide>
<PlaneContainer> {!hasLogged ? (
<img src="/logo.jpg" alt="plane logo"></img> <GoogleLogin
</PlaneContainer> clientId= {process.env.REACT_APP_CLIENT_ID}
<TextContainer> buttonText="Login with Google"
<BannerHeading>locaft</BannerHeading> onSuccess={responsePassGoogle}
<BannerText>Sit back, let us move you</BannerText> onFailure={responseFailGoogle}
cookiePolicy={'single_host_origin'}
/>
</TextContainer>
<SkyContainer> ): (
<img src="/skyscraper.png" alt="skyscraper"></img> <React.Fragment>
</SkyContainer> <p> username: {userData.user.username}</p>
<p> email: {userData.user.email}</p>
<p> pricing: {userData.user.pricing}</p>
</React.Fragment>
) }
</AppSide> </AppSide>
<AppForm> <AppForm>
{!userData.user ? ( {!userData.user ? (

View File

@ -6,13 +6,13 @@ import { Link, useHistory, withRouter } from "react-router-dom";
import {Button, FormCenter, FormField, FormLabel, FormInput, FormLink } from './miscellaneous/Styles' import {Button, FormCenter, FormField, FormLabel, FormInput, FormLink } from './miscellaneous/Styles'
const Login = () => { const Login = () => {
const [email, setEmail] = useState(); const [email, setEmail] = useState();
const [password, setPassword] = useState(); const [password, setPassword] = useState();
const [error, setError] = useState(); const [error, setError] = useState();
const { userData,setUserData } = useContext(UserContext); const { userData,setUserData } = useContext(UserContext);
const history = useHistory(); const history = useHistory();
const submit = async (e) => { const submit = async (e) => {
@ -23,6 +23,7 @@ const Login = () => {
"https://server-locaft.herokuapp.com/users/login", "https://server-locaft.herokuapp.com/users/login",
loginUser loginUser
); );
console.dir("login res " + loginRes.data.user);
setUserData({ setUserData({
token: loginRes.data.token, token: loginRes.data.token,
user: loginRes.data.user, user: loginRes.data.user,
@ -32,9 +33,9 @@ const Login = () => {
} catch (err) { } catch (err) {
err.response.data.msg && setError(err.response.data.msg); err.response.data.msg && setError(err.response.data.msg);
} }
}; };
return ( return (
<FormCenter> <FormCenter>
{error && ( {error && (
<ErrorNotice message={error} clearError={() => setError(undefined)} /> <ErrorNotice message={error} clearError={() => setError(undefined)} />
@ -51,7 +52,7 @@ const Login = () => {
</FormField> </FormField>
<FormField> <FormField>
<Button <Button
type="submit" type="submit"
radiuscolor="#009578" radiuscolor="#009578"
@ -61,7 +62,7 @@ const Login = () => {
>Sign In</Button> <FormLink exact to="/register" className="FormField__Link">Not a member?</FormLink> >Sign In</Button> <FormLink exact to="/register" className="FormField__Link">Not a member?</FormLink>
</FormField> </FormField>
</form> </form>
</FormCenter> </FormCenter>
); );
} }

View File

@ -27,7 +27,7 @@ const Header = styled.header`
display: fixed; display: fixed;
`:css``}; `:css``};
& .logo { & .logo {
font-family: "Ubuntu"; font-family: "Ubuntu";
font-size: 2rem; font-size: 2rem;
@ -50,7 +50,6 @@ const List = styled.ul`
flex-direction: row; flex-direction: row;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
padding: 13px 50px;
flex-wrap: nowrap; flex-wrap: nowrap;
margin-bottom: 0px !important; margin-bottom: 0px !important;
@ -76,7 +75,7 @@ const Anchor = styled.a`
`; `;
const Linker = styled(Link)` const Linker = styled(Link)`
color:#fff; color:#fff;
@ -98,9 +97,9 @@ export const logout = (setUserData) => {
}; };
export default function NavBar() { export default function NavBar() {
const [scrolled, setScrolled] = useState(); const [scrolled, setScrolled] = useState();
const { userData, setUserData } = useContext(UserContext); const { userData, setUserData } = useContext(UserContext);
const handleScroll=() => { const handleScroll=() => {
const offset=window.scrollY; const offset=window.scrollY;
if(offset > 200 ){ if(offset > 200 ){
@ -115,11 +114,11 @@ const { userData, setUserData } = useContext(UserContext);
}) })
return ( return (
<div className="navbar"> <div className="navbar">
<Header sticky = {scrolled} > <Header sticky = {scrolled} >
<Anchor href="/" className="logo">locaft</Anchor> <Anchor href="/" className="logo">locaft</Anchor>
<List> <List>
<ListElement><Anchor href="/">Home</Anchor></ListElement> <ListElement><Anchor href="/">Home</Anchor></ListElement>
@ -130,7 +129,7 @@ const { userData, setUserData } = useContext(UserContext);
<React.Fragment> <React.Fragment>
<ListElement><Linker onClick={() => logout(setUserData)}>{userData.user.username}</Linker></ListElement> <ListElement><Linker onClick={() => logout(setUserData)}>{userData.user.username}</Linker></ListElement>
</React.Fragment> </React.Fragment>
) : ( ) : (
<React.Fragment> <React.Fragment>
<ListElement><Linker to="/user/register">Register</Linker></ListElement> <ListElement><Linker to="/user/register">Register</Linker></ListElement>

View File

@ -39,8 +39,8 @@ const PricingPlanContainer = styled.div`
} }
`; `;
const Radio = styled.input` const Radio = styled.input`
@ -75,10 +75,10 @@ const Pricing = styled.section`
box-shadow: 0 0 15px rgba(0,0,0,0.4); box-shadow: 0 0 15px rgba(0,0,0,0.4);
transform: scale(1.05); transform: scale(1.05);
`:css``}; `:css``};
`; `;
const Text = styled.p` const Text = styled.p`
@ -123,7 +123,7 @@ const SpecialText = styled.div`
color: #ffffff; color: #ffffff;
background: #007c64; background: #007c64;
box-shadow: 0 0 10px rgba(0,0,0,0.2) inset; box-shadow: 0 0 10px rgba(0,0,0,0.2) inset;
&, ${Title}{ &, ${Title}{
margin: 0; margin: 0;
text-align: center; text-align: center;
@ -138,7 +138,7 @@ const Description = styled.div`
`; `;
const List = styled.ul` const List = styled.ul`
padding: 0; padding: 0;
margin: 0; margin: 0;
text-align: left; text-align: left;
`; `;
@ -148,7 +148,7 @@ const Feature = styled.li`
position: relative; position: relative;
font-size: 0.9 em; font-size: 0.9 em;
&:not(:last-child) { &:not(:last-child) {
margin-bottom: 2em; margin-bottom: 2em;
} }
&::before { &::before {
@ -191,9 +191,9 @@ const submit = async (props) => {
"https://server-locaft.herokuapp.com/users/update", { "https://server-locaft.herokuapp.com/users/update", {
id, id,
pricing pricing
} }
); );
} catch (err) { } catch (err) {
console.log(err); console.log(err);
@ -205,7 +205,7 @@ const submit = async (props) => {
<div className="body"> <div className="body">
<NavBar /> <NavBar />
{ !purchased ? ( { !purchased ? (
<React.Fragment> <React.Fragment>
<Heading>Pricing Plan</Heading> <Heading>Pricing Plan</Heading>
<PricingPlanContainer onChange={event => setPricing(event.target.value)}> <PricingPlanContainer onChange={event => setPricing(event.target.value)}>
@ -316,7 +316,7 @@ const submit = async (props) => {
</div> </div>
) )
} }
export default PricingPlan; export default PricingPlan;