1.0.8 • Published 5 years ago

token-manager-express v1.0.8

Weekly downloads
34
License
MIT
Repository
github
Last release
5 years ago

Token Manager

A simple in-memory token manager for Express. You can store data in the token.

Install

npm i token-manager-express

Usage

Setup Express with TokenManager

const express = require('express');
const TokenManager = require('token-manager-express');

app.use(TokenManager.init());

// will accept and parse any type of request (ex. GET, POST, PUT, ...etc)
app.use('/data', 
    TokenManager.ensureValidToken(
        // optional. if not specified, TokenManager just
        // ends the connection using `res.end()`
        (req, res, next) => res.send('invalid token')
    ),
    (req, res, next) => {
        // we can only get here if the token
        // is valid. TokenManager creates a token
        // field in req.
        const { token } = req;

        console.log(token.data.anotherField); // `${secret}[moreData]`
        console.log(req.body) // 'this data should only be visible to bearer'

        // if it's a one time use token:
        token.invalidate();
    }
);

Generate token:

const token = TokenManager.generate({
    // default is 3hrs. set to false
    // for no expiration
    expireAfterSeconds: false,

    // default is 64
    size: 64,

    // for convenience if you pass a function,
    // it will give you the generated secret
    data: ({ secret }) => ({
        anotherField: `${secret}[moreData]`
    }),

    // this is also valid:
    data: {
        anotherField: 'someData'
    }
});

console.log(token.secret); // the secret

Send data with Token

// You can now use the token to access the /data route

// For GET requests:
request(`/data?token=${token.secret}`);

// For other type of requests:
request('/data', {
    auth: {
        bearer: token.secret
    },
    method: 'POST',
    body: 'this data should only be visible to bearer',
    json: true
});

TokenManager

init(): express.Handler;

/**
 * Ensures that the current request has a valid token.
 */
ensureValidToken(onInvalidToken?: express.Handler): express.Handler;

generate<T extends {}>(opts: TokenOpts<T>): Token<T>;
invalidate<T>(token: Token<T> | string): boolean;
get<T extends {}>(secret: string): Token<T> | null;
exists(secret: string): boolean;

readonly Token: typeof Token;
readonly TokenManagerTag: Symbol;

Token

constructor(opts: TokenOpts<T>);

readonly data: T;
readonly secret: string;
readonly secretUri: string;
readonly valid: boolean;
readonly expires: boolean;

invalidate(): void;

Credits

Made with ❤ at Income Store in Lancaster, PA.

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago