@financial-times/n-user-api-client

Client to access User API on the FT Membership Platform

Stats

StarsIssuesVersionUpdatedCreatedSize
@financial-times/n-user-api-client
194.0.2a year ago4 years agoMinified + gzip package size for @financial-times/n-user-api-client in KB

Readme

n-user-api-client

A client to access the User API on the FT Membership Platform

npm version

CircleCI Dependencies devDependencies

Installation

npm i @financial-times/n-user-api-client --save

Usage example

import {updateUserProfile} from '@financial-times/n-user-api-client';

await updateUserProfile({
    session: 'abc123',
    userId: 'def456',
    apiHost: process.env['MEMBERSHIP_API_HOST_PROD'],
    apiKey: process.env['MEMBERSHIP_API_KEY_PROD'],
    apiClientId: process.env['AUTH_API_CLIENT_ID_PROD'],
    userUpdate: { ... }
})

Public methods

getUserBySession

Arguments

session (string) - a valid user session ID. If stale (> 30 minutes old) then the returned user data will be redacted, some fields including address will be null

demographicsLists (object) - optional - lists of demographics data eg positions, industries, responsibilities. If supplied they'll be used to decorate the user object. If the user has a value stored for each then that value will be marked selected in the corresponding list

Return value

A 'user object' with profile and subscription sections

getUserIdAndSessionData

Arguments

session (string) - a valid user session ID. If stale (> 30 minutes old) then the returned user data will be redacted, some fields including address will be null

apiHost, apiKey - the consumer app should pass these in, based on Vault env vars

Return value

A user ID (string)

getPaymentDetailsBySession

Arguments

session (string) - a valid user session ID. If stale (> 30 minutes old) then the returned user data will be redacted, some fields including address will be null

Return value

A payment method detail Object (varies in form depends on the type of the method - CreditCard|PayPal|DirectDebit), returns null if the user hasn't got a payment method yet.

loginUser

Arguments

email (string)

password (string)

remoteIp (string) - the IP of the user

countryCode (string) - the country the user is located in

userAgent (string) - the User-Agent header of the user

apiHost, apiKey - the consumer app should pass these in, based on Vault env vars

appName - the name of the app using n-user-api-client

Return value

fresh session data will be returned.

updateUserProfile

Arguments

session (string) - a valid user session ID. If stale (> 30 minutes old) then a valid authorization API token won't be returned and the overall request will fail

apiHost, apiKey, apiClientId - the consumer app should pass these in, based on Vault env vars

userId (string)

userUpdate - a user object. It will be merged into a fresh copy of the user's record retrieved from the database

Return value

The updated user object

changeUserPassword

Arguments

session (string) - a valid user session ID. If stale (> 30 minutes old) then a valid authorization API token won't be returned and the overall request will fail

apiHost, apiKey, apiClientId - the consumer app should pass these in, based on Vault env vars

userId (string)

passwordData (object) - in this format

appName - the name of the app using n-user-api-client

Return value

If successful, the user will be reauthenticated and the fresh session data will be returned.

Build

The module is written in typescript - compile to the dist/ folder with:

make build

Releasing

To release a new version of the client, draft a new release in Github. There's no need to update package.json.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.