@ministryofjustice/fb-user v1.0.1
JSON Web Token client
Base client for requests to endpoints which require a JSON Web Token for authentication.
Using a client
// require the client class
const FBJWTClient = require('@ministryofjustice/fb-user/jwt/client')
// create a client instance
const jwtClient = new FBJWTClient(serviceSecret, serviceToken, serviceSlug, microserviceUrl, [errorClass])serviceSecret
A serviceSecret is required.
The constructor will throw an error if no serviceSecret is provided.
serviceToken
A serviceToken is required.
The constructor will throw an error if no serviceToken is provided.
serviceSlug
A serviceSlug is required.
The constructor will throw an error if no serviceSlug is provided.
microserviceUrl
A microserviceUrl is required.
The constructor will throw an error if no microserviceUrl is provided.
errorClass
An errorClass is optional.
Extending
// extend base class
class FBMyClient extends FBJWTClient {
constructor (serviceSecret, serviceToken, serviceSlug, microserviceUrl, myVar) {
super(serviceSecret, serviceToken, serviceSlug, microserviceUrl)
// do something with additional constructor argument
this.myVar = myVar
}
}
const myClient = new FBMyClient('service_secret', 'service_token', 'myservice', 'http://myservice', 'my var')// extend base class with custom error
class FBAnotherClient extends FBJWTClient {
constructor (serviceSecret, serviceToken, serviceSlug, microserviceUrl) {
// create custom error class
class FBAnotherClientError extends FBJWTClient.prototype.ErrorClass {}
super(serviceSecret, serviceToken, serviceSlug, microserviceUrl, FBAnotherClientError)
}
}Methods
generateAccessToken
Generate a JWT access token
createEndpointUrl
Create the URL for an endpoint
sendGet
Dispatch
GETrequests to an endpointsendPost
Dispatch
POSTrequests to an endpointencrypt
Encrypt data with AES 256
decrypt
Decrypt data
encryptUserIdAndToken
Encrypt the user ID and token using the service secret
decryptUserIdAndToken
Decrypt the user ID and token using the service secret
handleRequestError
This function will be invoked with an error an argument when the transaction fails
createRequestOptions
Create request options, whether
GETorPOSTthrowRequestError
This function can be invoked to throw request errors
JSON Web Token client implementations
Data Store client
Client for requests to datastore endpoints.
Using a client
// load client
const FBUserDataStoreClient = require('@ministryofjustice/fb-user/datastore/client')
// initialise client
const userDataStoreClient = new FBUserDataStoreClient(serviceSecret, serviceToken, serviceSlug, userDataStoreUrl)Fetching and storing
// fetch user data
const userData = await userDataStoreClient.getData(userId, userToken)
// store user data
await userDataStoreClient.setData(userId, userToken, userData)File Store client
Client for requests to filestore endpoints.
Using a client
// load client
const FBUserFileStoreClient = require('@ministryofjustice/fb-user/filestore/client')
// initialise client
const userFileStoreClient = new FBUserFileStoreClient(serviceSecret, serviceToken, serviceSlug, userFileStoreUrl)Fetching and storing
// fetch user file
const userFile = await userFileStoreClient.fetch(userId, userToken, fingerprint)
// userFile => { file }
// With the policy defined
const policy = { [max_size], [expires], [allowed_types] }
let uploadDetails
// Either
// store user file
uploadDetails = await userFileStoreClient.store(userId, userToken, file, policy)
// uploadDetails => { fingerpint, url, size, type, date }
// Or
// store user file from file path
uploadDetails = await userFileStoreClient.storeFromPath(userId, userToken, filePath, policy)