gatekey
Authentication library for gatekey.io
Install
$ npm i @immutabl3/gatekey
Usage
Basics
Instantiating gatekey takes an options configuration object and returns a promise
import gatekey from '@immutabl3/gatekey';
gatekey({
// prevent redirecting so that we can see the error in catch
redirect: false
})
.then(results => {
// results = {token: '', redirect: fn, payload: {}}
})
.catch(error => {
// the error that occurred when authenticating
});
Options
You can pass these options at instantiation.
gatekey(
// options
{
redirect: false
}
);
-
key string [
gatekey
]: what key to store validation value under -
secure boolean [
true
]: if the page is required to be loaded over 'https' -
redirect boolean [
true
]: if the page should be redirected on failure -
alwaysValidate boolean [
false
]: whether the page should always be validated on load. Default behavior is to randomly retry if the page has already been authenticated -
expiration number [
43200000
]: ms after page when validation is no longer valid. After this duration, the page will be validated on next load. Defaults to 12 hours. -
retryChance number [
0.1
]: the percent chance that a validated page load will revalidate. This is to prevent alterations to the store giving permenant access. -
store object [
sessionStore
]: the store used to the validation value. This object can be replaced as long as it implements two methods:getItem
andsetItem
with behavior following sessionStore. -
fallbackToMemoryStore boolean [
true
]: if the store is unavailble, should gatekey fallback to an in-memory store. Local and session storage may be unavailable in incognito modes.
Results
After instantiation, gatekey provides an object.
gatekey()
.then(results => {
// results = {token: '', redirect: fn, payload: {}}
});
- token string: the JWT used to authorize access
- redirect function: a redirect function that will redirect the page to the custom error page. Takes an optional error as a parameter.
- payload object: the deserialized JSON payload from the JWT
Support
Uses fetch
and Object.assign
. If older browser (or IE 11) support is required, polyfills are available: