Skip to content

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

License

Notifications You must be signed in to change notification settings

forgotpw/phone-token-service

Repository files navigation

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published