// Operations when the web page is loaded. function onLoad() { var i, items, tabs; items = document.getElementsByClassName("tab-pane"); for (i = 0; i < items.length; i++) { items[i].style.display = 'none'; } document.getElementById("statusNotAuth").style.display = 'block'; document.getElementById("panelNotAuth").style.display = 'block'; document.getElementById("statusAuth").style.display = 'none'; document.getElementById("panelAuth").style.display = 'none'; // Initiatlize CognitoAuth object var auth = initCognitoSDK(); document.getElementById("signInButton").addEventListener("click", function () { userButton(auth); }); document.getElementById("refreshTokenButton").addEventListener("click", function () { refreshTokenFunction(auth); }); document.getElementById("cachedSessionButton").addEventListener("click", function () { cachedSessionFunction(auth); }); var curUrl = window.location.href; auth.parseCognitoWebResponse(curUrl); console.log(curUrl) console.log(window.location) } // Operation when tab is closed. function closeTab(tabName) { document.getElementById(tabName).style.display = 'none'; } // Operation when tab is opened. function openTab(tabName) { document.getElementById(tabName).style.display = 'block'; } // Operations about toggle tab. function toggleTab(tabName) { if (document.getElementById("usertab").style.display == 'none') { document.getElementById("usertab").style.display = 'block'; document.getElementById("tabIcon").innerHTML = '_'; } else { document.getElementById("usertab").style.display = 'none'; document.getElementById("tabIcon").innerHTML = '+'; } } // Operations when showing message. function showMessage(msgTitle, msgText, msgDetail) { var msgTab = document.getElementById('message'); document.getElementById('messageTitle').innerHTML = msgTitle; document.getElementById('messageText').innerHTML = msgText; document.getElementById('messageDetail').innerHTML = msgDetail; msgTab.style.display = "block"; } // Perform user operations. function userButton(auth) { var state = document.getElementById('signInButton').innerHTML; if (state === "Sign Out") { document.getElementById("signInButton").innerHTML = "Sign In"; auth.signOut(); showSignedOut(); } else { auth.getSession(); } } function refreshTokenFunction(auth) { console.log(auth) var user = auth.getCachedSession(); console.log(user) document.getElementById('idtoken').innerHTML = " ... "; document.getElementById('acctoken').innerHTML = " ... "; document.getElementById('reftoken').innerHTML = " ... "; console.log("user tokens", user) console.log(user.getRefreshToken().getToken()) auth.refreshSession(user.getRefreshToken().getToken()) user = auth.getCachedSession(); console.log("new tokens", user) showSignedIn(user) } function cachedSessionFunction(auth) { console.log(auth) var user = auth.getCachedSession(); document.getElementById('idtoken').innerHTML = " ... "; document.getElementById('acctoken').innerHTML = " ... "; document.getElementById('reftoken').innerHTML = " ... "; showSignedIn(user) } // Operations when signed in. function showSignedIn(session) { document.getElementById("statusNotAuth").style.display = 'none'; document.getElementById("panelNotAuth").style.display = 'none'; document.getElementById("statusAuth").style.display = 'block'; document.getElementById("panelAuth").style.display = 'block'; document.getElementById("signInButton").innerHTML = "Sign Out"; if (session) { var idToken = session.getIdToken().getJwtToken(); if (idToken) { var payload = idToken.split('.')[1]; var tokenobj = JSON.parse(atob(payload)); var formatted = JSON.stringify(tokenobj, undefined, 2); document.getElementById('idtoken').innerHTML = formatted; } var accToken = session.getAccessToken().getJwtToken(); if (accToken) { var payload = accToken.split('.')[1]; var tokenobj = JSON.parse(atob(payload)); var formatted = JSON.stringify(tokenobj, undefined, 2); document.getElementById('acctoken').innerHTML = formatted; } var refToken = session.getRefreshToken().getToken(); if (refToken) { document.getElementById('reftoken').innerHTML = refToken.substring(1, 20); } // Initialize the Amazon Cognito credentials provider /* AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'eu-west-1:7b7dc95f-afd8-4395-81cb-9e7ed6a225d5', Logins: { 'cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Pno8hdIWS': idToken } }); AWS.config.region = 'eu-west-1'; */ // Create a new service object s3 = new AWS.S3({ apiVersion: '2006-03-01', params: { Bucket: albumBucketName }, credentials: new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'eu-west-1:7b7dc95f-afd8-4395-81cb-9e7ed6a225d5', Logins: { 'cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Pno8hdIWS': idToken } }), region: "eu-west-1" }); listAlbums(); } openTab("userdetails"); } // Operations when signed out. function showSignedOut() { document.getElementById("statusNotAuth").style.display = 'block'; document.getElementById("panelNotAuth").style.display = 'block'; document.getElementById("statusAuth").style.display = 'none'; document.getElementById("panelAuth").style.display = 'none'; document.getElementById('idtoken').innerHTML = " ... "; document.getElementById('acctoken').innerHTML = " ... "; document.getElementById('reftoken').innerHTML = " ... "; closeTab("userdetails"); } // Initialize a cognito auth object. function initCognitoSDK() { var authData = { ClientId: '477cp7vtqoc844c63s7aa0u2bc', // Your client id here AppWebDomain: 'fc-photo-viewer.auth.eu-west-1.amazoncognito.com', // Exclude the "https://" part. TokenScopesArray: ['openid'], // like ['openid','email','phone']... RedirectUriSignIn: 'https://photos.firefly-consulting.co.uk', // like http://localhost:3000 RedirectUriSignOut: 'https://www.google.com', IdentityProvider: 'COGNITO', UserPoolId: 'eu-west-1_Pno8hdIWS', AdvancedSecurityDataCollectionFlag: false // optional }; var auth = new AmazonCognitoIdentity.CognitoAuth(authData); // You can also set state parameter // auth.setState(); auth.userhandler = { onSuccess: function (result) { alert("Sign in success, scroll down to see tokens"); showSignedIn(result); }, onFailure: function (err) { alert("Error!" + err); }, onSuccessRefreshToken(result) { alert("onSuccessRefreshToken"); console.log(result) } }; // The default response_type is "token", uncomment the next line will make it be "code". auth.useCodeGrantFlow(); return auth; }