updatd logout links and login flow for nextauth
This commit is contained in:
@@ -195,7 +195,7 @@ const RegisterForm = (props) => {
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Field
|
{/* <Field
|
||||||
name="pinswg_custom_password"
|
name="pinswg_custom_password"
|
||||||
id="pinswg_custom_password"
|
id="pinswg_custom_password"
|
||||||
component={RenderTextfield}
|
component={RenderTextfield}
|
||||||
@@ -226,7 +226,7 @@ const RegisterForm = (props) => {
|
|||||||
errorMsg={t(
|
errorMsg={t(
|
||||||
"account:register-new-account-confirm-password-label-errormsg"
|
"account:register-new-account-confirm-password-label-errormsg"
|
||||||
)}
|
)}
|
||||||
/>
|
/> */}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset className="govuk-fieldset">
|
<fieldset className="govuk-fieldset">
|
||||||
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
|
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
|
||||||
|
|||||||
@@ -741,6 +741,24 @@ const Breadcrumbs = (props) => {
|
|||||||
) : (
|
) : (
|
||||||
""
|
""
|
||||||
)}
|
)}
|
||||||
|
{router.pathname == "/auth/signin" ? (
|
||||||
|
<>
|
||||||
|
<li className="govuk-breadcrumbs__list-item">
|
||||||
|
Sign in
|
||||||
|
</li>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
|
{router.pathname == "/auth/verify-request" ? (
|
||||||
|
<>
|
||||||
|
<li className="govuk-breadcrumbs__list-item">
|
||||||
|
Check your email
|
||||||
|
</li>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)}
|
||||||
{/* {!_.isEmpty(slug) ? (
|
{/* {!_.isEmpty(slug) ? (
|
||||||
<>
|
<>
|
||||||
<li className="govuk-breadcrumbs__list-item">
|
<li className="govuk-breadcrumbs__list-item">
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
|
|||||||
import { setLogout } from "../store/accountDetails/action";
|
import { setLogout } from "../store/accountDetails/action";
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import { parseCookies, setCookie, destroyCookie } from "nookies";
|
import { parseCookies, setCookie, destroyCookie } from "nookies";
|
||||||
|
|
||||||
|
import { useSession, signIn, signOut } from "next-auth/react";
|
||||||
|
|
||||||
const Header = (props) => {
|
const Header = (props) => {
|
||||||
let { t, lang } = useTranslation();
|
let { t, lang } = useTranslation();
|
||||||
|
|
||||||
@@ -33,6 +36,9 @@ const Header = (props) => {
|
|||||||
"/myportal/error",
|
"/myportal/error",
|
||||||
"/accessibility",
|
"/accessibility",
|
||||||
"/details-about-cookies",
|
"/details-about-cookies",
|
||||||
|
"/auth/verify-request",
|
||||||
|
"/auth/signin",
|
||||||
|
"/auth/error",
|
||||||
];
|
];
|
||||||
const hasContactLink = [
|
const hasContactLink = [
|
||||||
"/dns/application-process",
|
"/dns/application-process",
|
||||||
@@ -214,7 +220,8 @@ const Header = (props) => {
|
|||||||
<a
|
<a
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
destroyCookie({}, "pinsUser"),
|
destroyCookie({}, "pinsUser"),
|
||||||
window.localStorage.clear();
|
window.localStorage.clear(),
|
||||||
|
signOut({ callbackUrl: "/logout" });
|
||||||
}}
|
}}
|
||||||
className="govuk-header__link govuk-!-margin-right-3"
|
className="govuk-header__link govuk-!-margin-right-3"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ let Login = (props) => {
|
|||||||
GG_REDIRECT_URI,
|
GG_REDIRECT_URI,
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const { session, status } = useSession();
|
const { data: session } = useSession();
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { locale } = router;
|
const { locale } = router;
|
||||||
@@ -226,18 +226,30 @@ let Login = (props) => {
|
|||||||
{t("home:login-card-title")}
|
{t("home:login-card-title")}
|
||||||
</h3>{" "}
|
</h3>{" "}
|
||||||
<div className="govuk-form-group govuk-!-margin-top-4">
|
<div className="govuk-form-group govuk-!-margin-top-4">
|
||||||
{" "}
|
<div className="govuk-body">
|
||||||
Not Signed in
|
{session && "Signed in as " + session.user?.email}
|
||||||
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
{!session && (
|
||||||
|
<button
|
||||||
|
className="govuk-button withChevron govuk-button-cta"
|
||||||
|
type="button"
|
||||||
|
onClick={() => signIn("email")}
|
||||||
|
>
|
||||||
|
Sign in with email address
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
{session && (
|
||||||
<button
|
<button
|
||||||
className="govuk-button"
|
className="govuk-button"
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => signIn()}
|
onClick={() => signOut()}
|
||||||
>
|
>
|
||||||
Magic Link Sign in
|
Magic Link Sign Out
|
||||||
</button>
|
</button>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
<form onSubmit={handleSubmit(onHandleSubmit)}>
|
{/* <form onSubmit={handleSubmit(onHandleSubmit)}>
|
||||||
{validLoginID == false && (
|
{validLoginID == false && (
|
||||||
<div className="govuk-error-message govuk-form-group--error">
|
<div className="govuk-error-message govuk-form-group--error">
|
||||||
Incorrect username or password
|
Incorrect username or password
|
||||||
@@ -387,7 +399,7 @@ let Login = (props) => {
|
|||||||
{t("home:login-contact-email")}
|
{t("home:login-contact-email")}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div> */}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* <LoadingOverlay
|
{/* <LoadingOverlay
|
||||||
|
|||||||
+2
-1
@@ -12,7 +12,7 @@ import Dns from "./homepage/dns";
|
|||||||
const MainHome = (props) => {
|
const MainHome = (props) => {
|
||||||
let { t } = useTranslation();
|
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 router = useRouter();
|
||||||
const { locale } = router;
|
const { locale } = router;
|
||||||
|
|
||||||
@@ -33,6 +33,7 @@ const MainHome = (props) => {
|
|||||||
<Login
|
<Login
|
||||||
GG_CLIENT_ID={GG_CLIENT_ID}
|
GG_CLIENT_ID={GG_CLIENT_ID}
|
||||||
GG_REDIRECT_URI={GG_REDIRECT_URI}
|
GG_REDIRECT_URI={GG_REDIRECT_URI}
|
||||||
|
session={session}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{/* <Inspectorate /> */}
|
{/* <Inspectorate /> */}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import { useState } from "react";
|
|||||||
import TimeOut from "../components/timeout";
|
import TimeOut from "../components/timeout";
|
||||||
import UploadFile from "./myportal/uploadFile";
|
import UploadFile from "./myportal/uploadFile";
|
||||||
|
|
||||||
|
import { useSession, signIn, signOut } from "next-auth/react";
|
||||||
|
|
||||||
const MyPortal = (props) => {
|
const MyPortal = (props) => {
|
||||||
const { showFileUpload } = props;
|
const { showFileUpload } = props;
|
||||||
let { t } = useTranslation();
|
let { t } = useTranslation();
|
||||||
@@ -57,7 +59,8 @@ const MyPortal = (props) => {
|
|||||||
console.log("////////////", "\n", "logout", "\n", "//////////");
|
console.log("////////////", "\n", "logout", "\n", "//////////");
|
||||||
destroyCookie({}, "pinsUser"),
|
destroyCookie({}, "pinsUser"),
|
||||||
window.localStorage.clear(),
|
window.localStorage.clear(),
|
||||||
router.replace(props.ggLogout);
|
//router.replace(props.ggLogout);
|
||||||
|
signOut({ callbackUrl: "/logout" });
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export default function YourAccount() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="card-body">
|
{/* <div className="card-body">
|
||||||
<h3 className="heading-small card-heading">
|
<h3 className="heading-small card-heading">
|
||||||
{t("myportal:changepassword-card-title")}
|
{t("myportal:changepassword-card-title")}
|
||||||
</h3>
|
</h3>
|
||||||
@@ -43,7 +43,7 @@ export default function YourAccount() {
|
|||||||
</a>
|
</a>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> */}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
+12
-21
@@ -19,6 +19,7 @@ import ServiceBanner from "../components/servicebanner";
|
|||||||
import { setAccountDetails } from "../store/accountDetails/action";
|
import { setAccountDetails } from "../store/accountDetails/action";
|
||||||
import { getGovGatewayConfig } from "../store/govgateway/action";
|
import { getGovGatewayConfig } from "../store/govgateway/action";
|
||||||
import { wrapper } from "../store/store";
|
import { wrapper } from "../store/store";
|
||||||
|
import { getSession, useSession, signIn, signOut } from "next-auth/react";
|
||||||
|
|
||||||
const Home = (props) => {
|
const Home = (props) => {
|
||||||
const {
|
const {
|
||||||
@@ -42,7 +43,7 @@ const Home = (props) => {
|
|||||||
|
|
||||||
//console.log("hashed email str", loginEmailStr);
|
//console.log("hashed email str", loginEmailStr);
|
||||||
_.isEmpty(loggedInUserId) != false && !hasGGCode
|
_.isEmpty(loggedInUserId) != false && !hasGGCode
|
||||||
? console.log("no ggcode")
|
? console.log("no session")
|
||||||
: _.has(loggedInUserId, "value")
|
: _.has(loggedInUserId, "value")
|
||||||
? _.isEmpty(loggedInUserId.value)
|
? _.isEmpty(loggedInUserId.value)
|
||||||
? router.replace({
|
? router.replace({
|
||||||
@@ -157,15 +158,17 @@ export const getServerSideProps = wrapper.getServerSideProps(
|
|||||||
(store) => async (ctx) => {
|
(store) => async (ctx) => {
|
||||||
const { query, req, res } = ctx;
|
const { query, req, res } = ctx;
|
||||||
|
|
||||||
|
let thisSession = await getSession(ctx);
|
||||||
|
|
||||||
var relayToken = await getToken();
|
var relayToken = await getToken();
|
||||||
relayToken = relayToken.access_token;
|
relayToken = relayToken.access_token;
|
||||||
|
|
||||||
console.log("gg code:", query.code);
|
console.log("auth sess:", thisSession);
|
||||||
console.log("gg local", query.ui_locales);
|
|
||||||
|
|
||||||
const showLoginCheck = process.env.SHOWLOGIN || false;
|
const showLoginCheck = process.env.SHOWLOGIN || false;
|
||||||
|
|
||||||
const hasLoginCode = typeof query.code != "undefined";
|
const hasLoginCode = thisSession != null;
|
||||||
|
|
||||||
let providerConfig = await getProviderConfig();
|
let providerConfig = await getProviderConfig();
|
||||||
let ggLocale =
|
let ggLocale =
|
||||||
typeof query.ui_locales != "undefined" && query.ui_locales;
|
typeof query.ui_locales != "undefined" && query.ui_locales;
|
||||||
@@ -189,27 +192,15 @@ export const getServerSideProps = wrapper.getServerSideProps(
|
|||||||
let loginEmailStr = "";
|
let loginEmailStr = "";
|
||||||
|
|
||||||
if (hasLoginCode == true) {
|
if (hasLoginCode == true) {
|
||||||
ggToken = await getGGToken(
|
(loginEmailStr = hashString(thisSession.user.email)),
|
||||||
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(
|
(portalUserObj = await getPortalLogin(
|
||||||
ggUserInfo.data.email,
|
thisSession.user.email,
|
||||||
relayToken
|
relayToken
|
||||||
)),
|
)),
|
||||||
console.log("loggin user stuff: ", portalUserObj),
|
console.log("loggin user stuff: ", portalUserObj),
|
||||||
store.dispatch(setAccountDetails(portalUserObj)))
|
store.dispatch(setAccountDetails(portalUserObj));
|
||||||
: console.log(
|
} else {
|
||||||
ggToken.status + " " + ggToken.data.error_description
|
console.log("no session");
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ggToken.status == 400) {
|
if (ggToken.status == 400) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import {
|
|||||||
} from "../../store/watchedCases/action";
|
} from "../../store/watchedCases/action";
|
||||||
import { setCookie } from "nookies";
|
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 Home = (props) => {
|
||||||
const {
|
const {
|
||||||
@@ -157,6 +157,10 @@ export const getServerSideProps = wrapper.getServerSideProps(
|
|||||||
|
|
||||||
let loggedInUser = cookies.pinsUser;
|
let loggedInUser = cookies.pinsUser;
|
||||||
|
|
||||||
|
let thisSession = await getSession(ctx);
|
||||||
|
|
||||||
|
console.log("nextAuth Session:", thisSession);
|
||||||
|
|
||||||
let providerConfig = await getProviderConfig();
|
let providerConfig = await getProviderConfig();
|
||||||
|
|
||||||
store.dispatch(getGovGatewayConfig(providerConfig));
|
store.dispatch(getGovGatewayConfig(providerConfig));
|
||||||
|
|||||||
Reference in New Issue
Block a user