Skip to content

Latest commit

 

History

History
83 lines (64 loc) · 2.47 KB

README.md

File metadata and controls

83 lines (64 loc) · 2.47 KB

PhoneTokenService

A library for storing and retrieving of pseudo anonymised tokens from phone numbers, supporting standardized E164 phone number normalized formatting and S3 backed storage for the lookup data.

Installation

npm install --save phone-token-service

Usage

Get a Token from a Phone Number

Note that if a token doesn't yet exist it will be created by calling getTokenFromPhone.

const PhoneTokenService = require('phone-token-service');
const phoneTokenService = new PhoneTokenService({
  // salt for hashing algorithm 
  tokenHashHmac: 'mysecret',
  // s3 bucket for storing the mapping relationship
  s3bucket: 'forgotpw-usertokens-dev',
  // retrieve country code from ip address via https://ipapi.co/country/
  defaultCountryCode: 'US'
});
const phone = '212-555-1212';
const token = await phoneTokenService.getTokenFromPhone(phone);
console.log(`Token for ${phone} is ${token}`);

Get a Phone Number from a Token

const PhoneTokenService = require('phone-token-service');
const phoneTokenService = new PhoneTokenService({
  tokenHashHmac: 'mysecret',
  s3bucket: 'forgotpw-usertokens-dev',
  defaultCountryCode: 'US'
});
const userToken = 'UT39jsklsjsu2389u3832jljklcjfewoizlz';
const phone = await phoneTokenService.getPhoneFromToken(userToken);
console.log(`Phone for ${token} is ${phone}`);

Associate an Alexa User ID from a Token

If using with Amazon Alexa, this provides a way to associate a token with an Alexa User ID so you can later retrieve the token from the Alexa User Id.

const PhoneTokenService = require('phone-token-service');
const phoneTokenService = new PhoneTokenService({
  tokenHashHmac: 'mysecret',
  s3bucket: 'forgotpw-usertokens-dev',
  defaultCountryCode: 'US'
});
const userToken = 'UT39jsklsjsu2389u3832jljklcjfewoizlz';
const alexaUserId = 'testing'; // Get this from session.user.userId in the Alexa response

// Set Alexa User ID and token relationship
await phoneTokenService.setAlexaUserIdFromToken(userToken, alexaUserId);

// Get a Token from an Alexa User ID
const alexaUserId = 'testing'; // Get this from session.user.userId in the Alexa response
const userToken = await phoneTokenService.getTokenFromAlexaUserId(alexaUserId);

Testing

# pip install iam-starter
npm install
iam-starter \
  --role my-iam-role-with-access \
  --profile profile-with-access-to-assume-role \
  --command npm test 

License

MIT

See LICENSE to see the full text.