From 3b1a49e561bd0218d790d387c1b0881323d5939d Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Tue, 19 Apr 2022 12:25:13 +0100 Subject: [PATCH] updatd logout links and login flow for nextauth --- components/account/registerform.js | 4 +-- components/breadcrumbs.js | 18 +++++++++++++ components/header.js | 9 ++++++- components/homepage/login.js | 36 +++++++++++++++++--------- components/main.js | 3 ++- components/myportal.js | 5 +++- components/myportal/youraccount.js | 4 +-- pages/index.js | 41 ++++++++++++------------------ pages/myportal/index.js | 6 ++++- 9 files changed, 81 insertions(+), 45 deletions(-) diff --git a/components/account/registerform.js b/components/account/registerform.js index bb05dffb..a066b3f0 100644 --- a/components/account/registerform.js +++ b/components/account/registerform.js @@ -195,7 +195,7 @@ const RegisterForm = (props) => { )} /> - { errorMsg={t( "account:register-new-account-confirm-password-label-errormsg" )} - /> + /> */}
diff --git a/components/breadcrumbs.js b/components/breadcrumbs.js index b381e99d..bc892385 100644 --- a/components/breadcrumbs.js +++ b/components/breadcrumbs.js @@ -741,6 +741,24 @@ const Breadcrumbs = (props) => { ) : ( "" )} + {router.pathname == "/auth/signin" ? ( + <> +
  • + Sign in +
  • + + ) : ( + "" + )} + {router.pathname == "/auth/verify-request" ? ( + <> +
  • + Check your email +
  • + + ) : ( + "" + )} {/* {!_.isEmpty(slug) ? ( <>
  • diff --git a/components/header.js b/components/header.js index 15a73590..ccbcd35a 100644 --- a/components/header.js +++ b/components/header.js @@ -7,6 +7,9 @@ import { useDispatch, useSelector, shallowEqual, connect } from "react-redux"; import { setLogout } from "../store/accountDetails/action"; import _ from "lodash"; import { parseCookies, setCookie, destroyCookie } from "nookies"; + +import { useSession, signIn, signOut } from "next-auth/react"; + const Header = (props) => { let { t, lang } = useTranslation(); @@ -33,6 +36,9 @@ const Header = (props) => { "/myportal/error", "/accessibility", "/details-about-cookies", + "/auth/verify-request", + "/auth/signin", + "/auth/error", ]; const hasContactLink = [ "/dns/application-process", @@ -214,7 +220,8 @@ const Header = (props) => { { destroyCookie({}, "pinsUser"), - window.localStorage.clear(); + window.localStorage.clear(), + signOut({ callbackUrl: "/logout" }); }} className="govuk-header__link govuk-!-margin-right-3" > diff --git a/components/homepage/login.js b/components/homepage/login.js index 030e2994..a50527ac 100644 --- a/components/homepage/login.js +++ b/components/homepage/login.js @@ -120,7 +120,7 @@ let Login = (props) => { GG_REDIRECT_URI, } = props; - const { session, status } = useSession(); + const { data: session } = useSession(); const router = useRouter(); const { locale } = router; @@ -226,18 +226,30 @@ let Login = (props) => { {t("home:login-card-title")} {" "}
    - {" "} - Not Signed in +
    + {session && "Signed in as " + session.user?.email} +

    - + {!session && ( + + )} + {session && ( + + )}
    -
    + {/* {validLoginID == false && ( + */} {/* { let { t } = useTranslation(); - const { showLogin, GG_REDIRECT_URI, GG_CLIENT_ID } = props; + const { showLogin, GG_REDIRECT_URI, GG_CLIENT_ID, session } = props; const router = useRouter(); const { locale } = router; @@ -33,6 +33,7 @@ const MainHome = (props) => { )} {/* */} diff --git a/components/myportal.js b/components/myportal.js index 0d919ee4..79fe02cf 100644 --- a/components/myportal.js +++ b/components/myportal.js @@ -19,6 +19,8 @@ import { useState } from "react"; import TimeOut from "../components/timeout"; import UploadFile from "./myportal/uploadFile"; +import { useSession, signIn, signOut } from "next-auth/react"; + const MyPortal = (props) => { const { showFileUpload } = props; let { t } = useTranslation(); @@ -57,7 +59,8 @@ const MyPortal = (props) => { console.log("////////////", "\n", "logout", "\n", "//////////"); destroyCookie({}, "pinsUser"), window.localStorage.clear(), - router.replace(props.ggLogout); + //router.replace(props.ggLogout); + signOut({ callbackUrl: "/logout" }); }; return ( diff --git a/components/myportal/youraccount.js b/components/myportal/youraccount.js index 4c933c42..439d5734 100644 --- a/components/myportal/youraccount.js +++ b/components/myportal/youraccount.js @@ -27,7 +27,7 @@ export default function YourAccount() { -
    + {/*

    {t("myportal:changepassword-card-title")}

    @@ -43,7 +43,7 @@ export default function YourAccount() {
    -
    + */} ); diff --git a/pages/index.js b/pages/index.js index deb4674e..1d1fa353 100644 --- a/pages/index.js +++ b/pages/index.js @@ -19,6 +19,7 @@ import ServiceBanner from "../components/servicebanner"; import { setAccountDetails } from "../store/accountDetails/action"; import { getGovGatewayConfig } from "../store/govgateway/action"; import { wrapper } from "../store/store"; +import { getSession, useSession, signIn, signOut } from "next-auth/react"; const Home = (props) => { const { @@ -42,7 +43,7 @@ const Home = (props) => { //console.log("hashed email str", loginEmailStr); _.isEmpty(loggedInUserId) != false && !hasGGCode - ? console.log("no ggcode") + ? console.log("no session") : _.has(loggedInUserId, "value") ? _.isEmpty(loggedInUserId.value) ? router.replace({ @@ -157,15 +158,17 @@ export const getServerSideProps = wrapper.getServerSideProps( (store) => async (ctx) => { const { query, req, res } = ctx; + let thisSession = await getSession(ctx); + var relayToken = await getToken(); relayToken = relayToken.access_token; - console.log("gg code:", query.code); - console.log("gg local", query.ui_locales); + console.log("auth sess:", thisSession); const showLoginCheck = process.env.SHOWLOGIN || false; - const hasLoginCode = typeof query.code != "undefined"; + const hasLoginCode = thisSession != null; + let providerConfig = await getProviderConfig(); let ggLocale = typeof query.ui_locales != "undefined" && query.ui_locales; @@ -189,27 +192,15 @@ export const getServerSideProps = wrapper.getServerSideProps( let loginEmailStr = ""; if (hasLoginCode == true) { - ggToken = await getGGToken( - providerConfig.token_endpoint, - query.code, - process.env.GG_REDIRECT_URI - ); - - _.has(ggToken, "access_token") - ? ((ggUserInfo = await getUserInfo( - providerConfig.userinfo_endpoint, - ggToken.access_token - )), - (loginEmailStr = hashString(ggUserInfo.data.email)), - (portalUserObj = await getPortalLogin( - ggUserInfo.data.email, - relayToken - )), - console.log("loggin user stuff: ", portalUserObj), - store.dispatch(setAccountDetails(portalUserObj))) - : console.log( - ggToken.status + " " + ggToken.data.error_description - ); + (loginEmailStr = hashString(thisSession.user.email)), + (portalUserObj = await getPortalLogin( + thisSession.user.email, + relayToken + )), + console.log("loggin user stuff: ", portalUserObj), + store.dispatch(setAccountDetails(portalUserObj)); + } else { + console.log("no session"); } if (ggToken.status == 400) { diff --git a/pages/myportal/index.js b/pages/myportal/index.js index fe2c014c..c6afd479 100644 --- a/pages/myportal/index.js +++ b/pages/myportal/index.js @@ -39,7 +39,7 @@ import { } from "../../store/watchedCases/action"; import { setCookie } from "nookies"; -import { useSession, signIn, signOut } from "next-auth/react"; +import { getSession, useSession, signIn, signOut } from "next-auth/react"; const Home = (props) => { const { @@ -157,6 +157,10 @@ export const getServerSideProps = wrapper.getServerSideProps( let loggedInUser = cookies.pinsUser; + let thisSession = await getSession(ctx); + + console.log("nextAuth Session:", thisSession); + let providerConfig = await getProviderConfig(); store.dispatch(getGovGatewayConfig(providerConfig));