import Link from "next/link"; import { useEffect, useState } from "react"; import { useRouter } from "next/router"; import useTranslation from "next-translate/useTranslation"; import { connect } from "react-redux"; import { Field, reduxForm } from "redux-form"; import LoadingOverlay from "react-loading-overlay"; import { getLogin } from "../../actions"; import { setLoggedInUserId } from "../../store/accountDetails/action"; import { parseCookies, setCookie, destroyCookie } from "nookies"; import { useSession, signIn, signOut } from "next-auth/react"; const required = (errorMsg) => (value) => value || typeof value === "number" ? undefined : errorMsg; export const minLength = (errorMsg) => (value) => value && value.length < 4 ? errorMsg //`Must be ${min} characters or more` : undefined; const RenderTextfield = ({ id, className, rows, datafieldname, name, label, input, hint1, hint2, meta: { touched, error }, ...custom }) => { return ( <>
{hint1}
{hint2}
{touched && error && ( Error:{" "} {error} )}
); }; const RenderPasswordfield = ({ id, className, rows, datafieldname, name, label, input, hint1, hint2, meta: { touched, error }, ...custom }) => { return ( <>
{hint1}
{touched && error && ( Error:{" "} {error} )}
); }; let Login = (props) => { let { t } = useTranslation(); const { handleSubmit, pristine, reset, submitting, setLoggedInUserId, GG_CLIENT_ID, GG_REDIRECT_URI, } = props; const { data: session } = useSession(); const router = useRouter(); const { locale } = router; // const [showSpinnerState, setShowSpinnerState] = useState(false); const [validLoginID, setValidLoginID] = useState(null); // console.log( // "built login url path:", // props.govGateway.config.authorization_endpoint + // "?response_type=code&scope=openid&client_id=" + // GG_CLIENT_ID + // "&redirect_uri=" + // GG_REDIRECT_URI + // "&ui_locales=" + // (router.locale == "cy" ? "cy" : "en-GB") // ); // let spinnerState = () => { // showSpinnerState == true // ? setShowSpinnerState(false) // : setShowSpinnerState(true); // }; const onHandleSubmit = (values) => { //spinnerState(); let now = new Date(); let expDate = new Date(now); expDate.setDate(now.getDate() + 1); getLogin(values.loginUserID, values.loginUserPassword).then((data) => { data.value.length != 0 ? (setValidLoginID(true), setLoggedInUserId(data.value[0].contactid), setCookie(null, "pinsUser", data.value[0].contactid, { path: "/", expires: expDate, }), // spinnerState(), router.replace({ pathname: router.locale == "cy" ? "/fymhorth" : "/myportal", })) : //setShowSpinnerState(false), setValidLoginID(false); }); }; const cookies = parseCookies(); useEffect(() => { cookies.pinsUser != null || typeof cookies.pinsUser != "undefined" ? // spinnerState(), router.replace("/myportal", null, { shallow: true, }) : ""; }, [cookies.pinsUser, router]); const govGatwayLoginRedirect = () => { let ggUrl = props.govGateway.config.authorization_endpoint + "?response_type=code&scope=openid&client_id=" + GG_CLIENT_ID + "&redirect_uri=" + GG_REDIRECT_URI + "&ui_locales=" + (router.locale == "cy" ? "cy" : "en-GB"); console.log("login Url:", ggUrl); router.replace(ggUrl); }; const govGatwayForgottenLink = () => { let ggUrl = props.govGateway.config.authorization_endpoint + "/login/forgot-password"; router.replace(ggUrl); }; if (session === "loading") { return

loading...

; } if (session) { <>
Signed in as {session.user?.email}

; } return ( <>

{t("home:login-card-title")}

{" "}
{session && "Signed in as " + session.user?.email}

{!session && ( )} {session && ( )}
{validLoginID == false && (
Incorrect username or password
)}
{/* */}
{/* */}
); }; const mapStateToProps = (state) => { return { currentView: state.currentView, search: state.search, searchResultsObj: state.searchResultsObj, formData: state.formData, appealType: state.appealType, //form: state.form, myCases: state.myCases, watchedCases: state.watchedCases, myRepresentations: state.myRepresentations, awaitingSubmission: state.awaitingSubmission, govGateway: state.govGateway, }; }; const mapDispatchToProps = (dispatch) => { return { setLoggedInUserId: (userID) => { dispatch(setLoggedInUserId(userID)); }, }; }; export default connect( mapStateToProps, mapDispatchToProps )( reduxForm({ form: "loginForm", destroyOnUnmount: false, })(Login) );