@phacce/ms-app

0.1.0 • Public • Published

MS-APP

This is an express-based Nodejs module which sets up an application with basic functionalities such as form inputs sanitization, Json Web Token (JWT) authentications and Requests rate limiting.

Installation

Use the following command to install this package

npm install --save @phacce/ms-app

Usage

const App = require('@phacce/ms-app');

// Credentials
const encryptionKey = 'your_16_char_encryption_key';
const secret = 'your_jwt_secret';

const app = new App({ port: 3000, name: "Sample App" });

app.start(); // to start the app

app.stop(); // to stop the app

Setting up routes is still as easy :-)

const Router = require('express').Router();

Router.get('/', (req, res, next) => {
    res.json({ name: 'Welcome to the Phacce MS-APP' });
});

Router.post('/login', (req, res, next) => {
    res.json(req.body);
});

app.setRoutes({
    '/home': Router // this appends '/home' to every endpoint on this router
});

Other Express-based modules can also be loaded to the app using the loadModules method

app.loadModules([ any_express_based_module ]);

Need a stateless authentication mechanism? We've got you! Here, you can enable JWT with just one line of code (or maybe a bit more), like below

app.enableJWT({
    encryptionKey,
    secret,
    allowed: { entityName: entityModel }
});

Here, entityName, under allowed, refers to anything that is a collection in your Mongo Database; it can be user, page, etc. And entityModel refers to your exported mongoose model, which can be used to perform database lookups.

Pass your token in the request header in the _token field. To generate a token, use

const { token } = require('@phacce/ms-app');

let myToken = token.generate('your_object_having_an_id_for_your_document_in_the_db', encryptionKey, secret);

NB: JWT currently supports only MongoDB.

Limiting requests rate is neccessary to avoid server overload. You may do so by using the following

app.enableRateLimiter({
    host: '127.0.0.1',
    port: 6379,
    env: 'development',
    retries: 2, // number of requests before delay starts
    minWait: 10 * 1000, // 10 seconds => minimum amount of time to wait
    maxWait: 20 * 1000, // 20 seconds => maximum amount of time to wait
    lifetime: 60 * 60 // 1 hour => amount of time to remember the request
});

========

Package Sidebar

Install

npm i @phacce/ms-app

Weekly Downloads

0

Version

0.1.0

License

ISC

Unpacked Size

16.8 kB

Total Files

11

Last publish

Collaborators

  • bestbrain10
  • ikechukwukalu