const { Amplify, Auth } = aws_amplify; const awsmobile = { aws_project_region: "eu-west-2", aws_cognito_region: "eu-west-2", aws_user_pools_id: "eu-west-2_XZRTeISo4", aws_user_pools_web_client_id: "6l6072jf2u47uenanaivf75gj8", oauth: {}, aws_cognito_username_attributes: [], aws_cognito_social_providers: [], aws_cognito_signup_attributes: ["EMAIL"], aws_cognito_mfa_configuration: "OFF", aws_cognito_mfa_types: ["SMS"], aws_cognito_password_protection_settings: { passwordPolicyMinLength: 8, passwordPolicyCharacters: [], }, aws_cognito_verification_mechanisms: ["EMAIL"], storage: localStorage, cookieStorage: { domain: "localhost:5500", //'.mapcite.com', expires: 30, }, }; function parseJwt(token) { let base64Url = token.split(".")[1]; let base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); let jsonPayload = decodeURIComponent( window .atob(base64) .split("") .map(function (c) { return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2); }) .join("") ); return JSON.parse(jsonPayload); } function checkForGroup(group=""){ let jwt = parseJwt(Auth.user.signInUserSession.accessToken.jwtToken); let groups = jwt["cognito:groups"] || []; return !!(group === "" || groups.includes(group)); } Amplify.configure(awsmobile); async function signIn(username, password) { return await Auth.signIn(username, password).then((user) => { if (user.challengeName === "NEW_PASSWORD_REQUIRED") { let newPassword = prompt("Please enter a new password", "Password1!"); Auth.completeNewPassword( user, // the Cognito User Object newPassword // the new password ).then((userObject) => { // at this time the user is logged in if no MFA required return userObject; }); } else { // other situations } return user; }); } async function signOutAuth() { console.log("signed out"); //document.getElementById("signInButton").style.display = "block"; document.getElementById("signOutButton").style.display = "none"; Auth.signOut(); } let modelClosed = () => {}; function openModal() { let logInModal = bootstrap.Modal.getOrCreateInstance(document.getElementById("logInModal")); logInModal.show(); } function closeModal() { let logInModal = bootstrap.Modal.getOrCreateInstance(document.getElementById("logInModal")); logInModal.hide(); modelClosed(); console.log("modelClosed"); /// //location.replace("/review_page_frontend/externalListing/review.html"); } //setup doc events function loginSetup(authRequired = false) { return new Promise((resolve, _reject) => { console.log("loginSetup"); //user logged in if (Auth.user != null) { console.log("Auth.user"); return resolve(); } else { // user not logged in if (authRequired) { // page requires user to be logged in //open modal console.log("openModal"); setTimeout(() => { console.log("TimeoutopenModal"); openModal(); }, 125); //wait for user to log in modelClosed = () => { console.log("modelClosedInside"); return loginSetup(authRequired).then((res) => { return res; }); }; //return Promise.resolve(false); } else{ //page doesn't require a user to be logged in return resolve(); } } }); } //trigger login async function loginButton() { let username = document.getElementById("email_address").value; let password = document.getElementById("login_password").value; const user = await signIn(username, password); console.log(user); if (user != null) { console.log("log in!"); //document.getElementById("signInButton").style.display = "none"; document.getElementById("signOutButton").style.display = "block"; document.getElementById("email_address").value = ""; document.getElementById("login_password").value = ""; closeModal(); } else { console.log("Failed!"); document.getElementById("login_password").value = ""; } } //check for authed User async function authUser() { let isUserAuthed = await Auth.currentAuthenticatedUser().catch((err) => { console.log(err); return false; }); if (isUserAuthed) { document.addEventListener("DOMContentLoaded", function (_event) { //change button to be log out //document.getElementById("signInButton").style.display = "none"; document.getElementById("signOutButton").style.display = "block"; }); } else { return isUserAuthed; } } //fetch replacement to added auth if available (async () => { authUser(); })();