/*global WildRydes _config AmazonCognitoIdentity AWSCognito*/ var WildRydes = window.WildRydes || {}; (function scopeWrapper($) { var signinUrl = '/signin.html'; var poolData = { UserPoolId: _config.cognito.userPoolId, ClientId: _config.cognito.userPoolClientId }; var userPool; var cognitoCurrentUser; if (!(_config.cognito.userPoolId && _config.cognito.userPoolClientId && _config.cognito.region)) { $('#noCognitoMessage').show(); return; } userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData); if (typeof AWSCognito !== 'undefined') { AWSCognito.config.region = _config.cognito.region; } WildRydes.signOut = function signOut() { userPool.getCurrentUser().signOut(); }; WildRydes.getCurrentUserName = function getCurrentUserName(){ try { return userPool.getCurrentUser().username; } catch(exception){ return undefined; } }; WildRydes.authToken = new Promise(function fetchCurrentAuthToken(resolve, reject) { var cognitoUser = userPool.getCurrentUser(); if (cognitoUser) { cognitoUser.getSession(function sessionCallback(err, session) { if (err) { reject(err); } else if (!session.isValid()) { resolve(null); } else { //AWS.config.region = 'ap-northeast-2'; //AWS.config.credentials = new AWS.CognitoIdentityCredentials({ // IdentityPoolId: _config.credentials.IdentityPoolId, // Logins: { // 'cognito-idp.ap-northeast-2.amazonaws.com/ap-northeast-2_sUfLJYhwZ': session.getIdToken().getJwtToken() // } //}); //AWS.config.credentials.get() resolve(session.getIdToken().getJwtToken()); } }); } else { resolve(null); } }); /* * Cognito User Pool functions */ function register(email, password, onSuccess, onFailure) { var dataEmail = { Name: 'email', Value: email }; var attributeEmail = new AmazonCognitoIdentity.CognitoUserAttribute(dataEmail); userPool.signUp(toUsername(email), password, [attributeEmail], null, function signUpCallback(err, result) { if (!err) { onSuccess(result); } else { onFailure(err); } } ); } function signin(email, password, onSuccess, onFailure) { var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails({ Username: toUsername(email), Password: password }); var cognitoUser = createCognitoUser(email); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: onSuccess, onFailure: onFailure }); } function verify(email, code, onSuccess, onFailure) { createCognitoUser(email).confirmRegistration(code, true, function confirmCallback(err, result) { if (!err) { onSuccess(result); } else { onFailure(err); } }); } function createCognitoUser(email) { return new AmazonCognitoIdentity.CognitoUser({ Username: toUsername(email), Pool: userPool }); } function toUsername(email) { return email.replace('@', '-at-'); } /* * Event Handlers */ $(function onDocReady() { $('#signinForm').submit(handleSignin); $('#registrationForm').submit(handleRegister); $('#verifyForm').submit(handleVerify); }); function handleSignin(event) { var email = $('#emailInputSignin').val(); var password = $('#passwordInputSignin').val(); event.preventDefault(); signin(email, password, function signinSuccess() { //console.log('Successfully Logged In'); WildRydes.changeTokenToEmail(); window.location.reload(); }, function signinError(err) { alert(err); window.location.reload(); } ); } function handleRegister(event) { var email = $('#emailInputRegister').val(); var password = $('#passwordInputRegister').val(); var password2 = $('#password2InputRegister').val(); var onSuccess = function registerSuccess(result) { var cognitoUser = result.user; cognitoCurrentUser = cognitoUser; console.log('user name is ' + cognitoUser.getUsername()); var confirmation = ('Registration successful. Please check your email inbox or spam folder for your verification code.'); if (confirmation) { alert('가입메일로 인증주소를 전송했습니다. 확인해주세요.'); window.location.href = '/index.html'; } }; var onFailure = function registerFailure(err) { if(err == "InvalidParameterException: 1 validation error detected: Value at 'password' failed to satisfy constraint: Member must have length greater than or equal to 6"){ alert('비밀번호는 6자리 이상으로 설정해주세요.') }else{ console.log(err) alert(err); } }; event.preventDefault(); if (password === password2) { register(email, password, onSuccess, onFailure); } else { alert('Passwords do not match'); } } function handleVerify(event) { var email = $('#emailInputVerify').val(); var code = $('#codeInputVerify').val(); event.preventDefault(); verify(email, code, function verifySuccess(result) { console.log('call result: ' + result); console.log('Successfully verified'); alert('Verification successful. You will now be redirected to the login page.'); window.location.href = signinUrl; }, function verifyError(err) { alert(err); } ); } function getUserAttribute(event){ var token = WildRydes.authToken; var params = { AccessToken: token /* required */ }; cognitoidentityserviceprovider.getUser(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else{ console.log(data.UserAttributes); // successful response return data.UserAttributes; } }); } function updateUserAttribute(event){ var parameter = $('#parameter').val(); var attributeList = []; var attribute = { Name: 'custom:parameter', /* required */ Value: parameter }; var attribute = new AmazonCognitoIdentity.CognitoUserAttribute(attribute); attributeList.push(attribute); if(cognitoCurrentUser){ cognitoCurrentUser.updateAttributes(attributeList, function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); }); }else{ return; } } if(WildRydes.getCurrentUserName == undefined && getCookie('tempToken') == ""){ function s4() { return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1); } var tempToken = s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); setCookie('tempToken', tempToken, 30); } WildRydes.getTempToken = function getTempToken(){ if(WildRydes.getCurrentUserName() == undefined){ if(getCookie('tempToken') == ""){ function s4() { return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1); } var tempToken = s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); setCookie('tempToken', tempToken, 30); return tempToken }else{ return getCookie('tempToken') } }else{ return WildRydes.getCurrentUserName() } } }(jQuery));