UNPKG

@around25/jwt-utils

Version:

Perform jwt token operations like store, get, decode, get expiration date, check if expired, validate, remove from storage

103 lines (77 loc) 2.9 kB
A small package to perform [JWT](https://jwt.io/) token operations (store, get, decode, get expiration date, check if expired, validate, remove from storage). Works in `React` and `React Native`. ## Installation ``` npm install --save jwt-utils ``` ## Usage Initialize the package and then import in wherever you need it. The constructor takes a single config object as parameter. The `storageSystem` property is required. ```js import TokenService from 'jwt-utils' const TokenUtils = new TokenService({ storageSystem: window.localStorage }); export default TokenUtils ``` In the `React` environment, it can be either [window.localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) or [window.sessionStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage). And it's totally synchronous. #### Store Stores token using the specified storage system. Token must be a `string`. ```js // Take a properly formatted JWT token const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuYW1lIjoiSm9obiBEb2UiLCJleHAiOjE1MjU3MDAxNjE1NjJ9.qGB98H-4th9E0yTVHH235A4kCgFyKt5jIVgekk4fcp4' TokenUtils.store(token); ``` #### Get Retrieves the stored token if set, `undefined` otherwise. ```js const token = TokenUtils.get(); // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuY... ``` #### Decode Decodes a token. A falsy token will return `{}`. ```js const decodedToken = TokenUtils.decode(token); // { // id: 1, // name: "John Doe", // exp: 1525700161562 // } ``` #### Get expiration date Returns expiration date as unix timestamp (ms) or null if the `exp` property is not defined in the decoded token. ```js const expirationDate = TokenUtils.getExpirationDate(token); // 1525700161562 ``` #### Check if expired Returns a `boolean` value specifying if token is expired or not. ```js const isExpired = TokenUtils.isExpired(token); ``` #### Check if valid Checks if token is valid, simply by checking its existence. You can optionally use a validation function as a secondary param. In that case, the validation function should return a `boolean` value. ```js const isValid = TokenUtils.isValid(token, validationFunc); ``` #### Remove from storage Removes token from storage ```js TokenUtils.remove(token); ``` ## Usage with React Native In the `React Native` environment, `store`, `get` and `remove` methods return promises (due to the `async` nature of the storage system). ```js import { AsyncStorage } from 'react-native' import TokenService from 'jwt-utils' export default new TokenService({ storageSystem: AsyncStorage }); ``` ```js const result = await TokenUtils.store(token); // true const token = await TokenUtils.get(); // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuY... ``` ## External dependencies This package depends on [jwt-decode](https://github.com/auth0/jwt-decode) for token decoding.