Code Monkey home page Code Monkey logo

phone-token-service's Introduction

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.

phone-token-service's People

Contributors

dwkerwin avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.