Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.79 MB, 388 trang )
var email = document.getElementById('email');
var name = document.getElementById('name');
var password = document.getElementById('password');
var verifyPassword = document.getElementById('verify-password');
result.innerHTML = 'Sign Up...';
if (email.value == null || email.value == '') {
result.innerHTML = 'Please specify your email address.';
} else if (name.value == null || name.value == '') {
result.innerHTML = 'Please specify your name.';
} else if (password.value == null || password.value == '') {
result.innerHTML = 'Please specify a password.';
} else if (password.value != verifyPassword.value) {
result.innerHTML = 'Passwords are different, please check.';
} else {
var input = {
email: email.value,
name: name.value,
password: password.value,
};
lambda.invoke({
FunctionName: 'sampleAuthCreateUser',
Payload: JSON.stringify(input)
}, function(err, data) {
if (err) console.log(err, err.stack);
else {
var output = JSON.parse(data.Payload);
if (output.created) {
result.innerHTML = 'User ' + input.email + ' created. Please check your email to
validate the user and enable login.';
} else {
result.innerHTML = 'User not created.';
}
}
});
}
}
var form = document.getElementById('signup-form');
form.addEventListener('submit', function(evt) {
evt.preventDefault();
signup();
});
createUser Lambda Function (Node.js)
console.log('Loading function');
var AWS = require('aws-sdk');
var crypto = require('crypto');
var cryptoUtils = require('./lib/cryptoUtils');
var config = require('./config');
var dynamodb = new AWS.DynamoDB();
var ses = new AWS.SES();
function storeUser(email, name, password, salt, fn) {
var len = 128;
crypto.randomBytes(len, function(err, token) {
if (err) return fn(err);
token = token.toString('hex');
dynamodb.putItem({
TableName: config.DDB_TABLE,
Item: {
email: {
S: email
},
name: {
S: name
},
passwordHash: {
S: password
},
passwordSalt: {
S: salt
},
verified: {
BOOL: false
},
verifyToken: {
S: token
}
},
ConditionExpression: 'attribute_not_exists (email)'
}, function(err, data) {
if (err) return fn(err);
else fn(null, token);
});
});
}
function sendVerificationEmail(email, name, token, fn) {
var subject = 'Verification Email for ' + config.EXTERNAL_NAME;
https://avxhm.se/blogs/hill0
var verificationLink = config.VERIFICATION_PAGE + '?email=' + encodeURIComponent(email) +
'&verify=' + token;
ses.sendEmail({
Source: config.EMAIL_SOURCE,
Destination: {
ToAddresses: [
email
]
},
Message: {
Subject: {
Data: subject
},
Body: {
Html: {
Data: '