token-manager-express
TypeScript icon, indicating that this package has built-in type declarations

1.0.8 • Public • Published

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.

Package Sidebar

Install

npm i token-manager-express

Weekly Downloads

3

Version

1.0.8

License

MIT

Unpacked Size

9.75 kB

Total Files

7

Last publish

Collaborators

  • claudenegm