@brewery/auth

1.0.2 • Public • Published

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=<TEST@EMAIL.COM> 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.

Package Sidebar

Install

npm i @brewery/auth

Weekly Downloads

2

Version

1.0.2

License

MIT

Unpacked Size

27.6 kB

Total Files

10

Last publish

Collaborators

  • excelsior.mante
  • jcalado
  • brewery-apps