brewery-auth
v1.0.2
Published
Wrapper library for Amazon Cognito Identity SDK for JavaScript
Downloads
6
Maintainers
Readme
brewery-auth
Wrapper library for Amazon Cognito Identity SDK for JavaScript
Table of Contents
Install
npm install brewery-auth
Usage
BreweryAuth methods returns JavaScript promises that can easily be used with async
and await
Example usage in Serverless Framework:
const BreweryAuth = require('brewery-auth');
module.exports.handler = async (event) => {
const body = JSON.parse(event.body);
const poolData = {
UserPoolId: process.env.USER_POOL_ID,
ClientId: process.env.APP_CLIENT_ID,
};
const params = {
username: body.username,
attributes: [
{
Name: 'email',
Value: body.username,
},
{
Name: 'name',
Value: body.name,
},
{
Name: 'preferred_username',
Value: body.username,
},
],
};
let data;
try {
data = await new BreweryAuth(poolData).register(params);
} catch (err) {
console.log(err);
return { statusCode: 400, body: JSON.stringify(err.message) };
}
return { statusCode: 200, body: JSON.stringify(data) };
}
API
BreweryAuth({ UserPoolId: '<COGNITO_USER_POOL_ID>', ClientId: '<COGNITO_APP_CLIENT_ID>' })
.login({ clientId: '', clientSecret: '' })
.signup({ username: '', password: '', attributes: [] })
.register({ username: '', attributes: [] })
.signupConfirm({ clientId: '', confirmationCode: '' })
.signupResend({ clientId: '' })
.loginMfa({ clientId: '', mfaCode: '', loginSession: '' })
.loginNewPasswordRequired({ clientId: '', loginSession: '', newPassword: '' })
.logout({ clientId: '', refreshToken: '' })
.passwordForgot({ clientId: '' })
.passwordReset({ clientId: '', passwordResetCode: '', newPassword: '' })
.passwordChange({ clientId: '', oldPassword: '', newPassword: '', refreshToken: '' })
.profile({ clientId: '', refreshToken: '' })
.profileEdit({ clientId: '', attributes: [], refreshToken: '' })
.profileEditPhoneNumber({ clientId: '', phoneNumber: '', refreshToken: '' })
.setMfa({ clientId: '', enableMfa: true, refreshToken: '' })
.getMfa({ clientId: '', refreshToken: '' })
.refreshSession({ clientId: '', refreshToken: '' })
.deleteUser({ clientId: '', clientSecret: '' })
Testing
BreweryAuth uses AVA as test trunner and Istanbul for coverage reporting
A user added to AWS Cognito by default needs email confirmation. For testing purposes, it is required to create a Pre-SignUp Trigger Lambda Function to confirm the user email programatically.
Pre-SignUp Lambda Function Trigger:
exports.handler = (event, context, callback) => {
event.response.autoConfirmUser = true;
callback(null, event)
return
};
After creating the Lambda trigger, run the test locally:
$ USER_POOL_ID=<COGNITO_USER_POOL_ID> APP_CLIENT_ID=<COGNITO_APP_CLIENT_ID>
COGNITO_USERNAME=<[email protected]> npm test
Testing can also be integrated to a test pipeline. Just add USER_POOL_ID
, APP_CLIENT_ID
, and COGNITO_USERNAME
in environmental variables pipeline configuration.
Contributors
- Ronald dela Cruz
- Kevin John Ventura
License
MIT © Stratpoint Technologies Inc.