npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

allowaccess

v1.3.0

Published

AllowAccess is a middle ware to protect your routes as a middleware

Downloads

1

Readme

AllowAccess

**AllowAccess* is a simple, light-weight, fast and usefull middleware to give access to roles ( permissions ) to your routes in **ExpressJs**.

In this instructure you will learn about how to use this package in your apps.

Table of content

Installation

How to install AllowAccess? To install this package, use NPM.

$ npm i allowaccess

Config

So, import the package.

// ESM 6 and higher
import AllowAccess from "allowaccess";

// ESM 5 and lower
const AllowAccess = require("allowaccess");

Now create your instance with 4 params.

  • Status Code: The status code you want to send at response.
  • Message: The message that will be send in response.
  • Where: Where you send your item. [body, headers, params, query].
  • Name: Item name. Usualy use role.
const allowAccess = new AllowAccess(401, "You dont have access", "body", "role");

Ok then, next step is add middleware to routes.

Methods

There are 2 ways to protect your route.

  • Allow permissions
  • Deny permissions
  • Allow or Deny route for every one

Allow

In Allow, you just say to allow this route to these permissionns.

Ex: Now we just open /blog route post method for author and admin.

router.post(
  "/blog",
  allowAccess.allow(["admin", "author"]),
  userControllers.CREATE()
);

Deny

Here we just say to deny access to this route for permissions we say.

Ex: Now we open /blog/:id route put method only for author and admin.

router.put(
  "/blog/:id",
  allowAccess.deny(["author", "reader"]),
  userControllers.UPDATE()
);

Open

Now assume that you have a route for get all blogs. List of blogs. Now you can say open for all. How!?

Just pass the all or none!

Ex: Now we open /blog route get method only for author and admin. And it next code we also open our single blog for all too. /blog/:id route get method.

router.get(
  "/blog",
  allowAccess.open("all"),
  userControllers.ALL()
);
router.get(
  "/blog/:id",
  allowAccess.open("all"),
  userControllers.SINGLE()
);

Ex: Now we close /blog/:id route delete method for every permission.

router.delete(
  "/blog/:id",
  allowAccess.open("none"),
  userControllers.DELETE()
);

Example

If you did the practice correctly, your code will be show up like this.

// Import AllowAccess and Express
import AllowAccess from "allowaccess";
import express from "express";

// Create Express router
const router = express.Router();

// Create instance for allowAccess
const allowAccess = new AllowAccess(401, "You dont have access");

// Route /blog | Method: Get | Access Type: Allow | For: Everyone
router.get("/blog", allowAccess.open("all"), userControllers.ALL());

// Route /blog | Method: Post | Access Type: Allow | For: Admin, Auther
router.post("/blog", allowAccess.allow(["admin", "author"]), userControllers.CREATE());

// Route /blog/:id | Method: Get | Access Type: Allow | For: Everyone
router.get("/blog/:id", allowAccess.open("all"), userControllers.SINGLE());

// Route /blog | Method: Put | Access Type: Deny | For: Auther, Reader
router.put("/blog/:id", allowAccess.deny(["author", "reader"]), userControllers.UPDATE());

// Route /blog/:id | Method: Delete | Access Type: Deny | For: Everyone
router.delete("/blog/:id", allowAccess.open("none"), userControllers.DELETE());

All done, use it in the right way!


Development

If you want to develop the package, it is so simple. just follow steps below.

  • Clone the project
  • Install dependencies by running $ npm install
  • Start changing!
    • Link package
    • Test

Before you start: Remember the base or code are stored in lib/allowaccess.js. You need to edit there.

Cloning the project

To clone the project, you need to have git installed. Ok, now clone it same as command below.

$ git clone https://gitlab.com/BlackIQ/allowaccess

installing dependencies

Next, install what package uses with npm i or npm install.

$ npm i

Changing

To change package or anything, your need a testing environment to use linked package. Just follow steps.

Link package

We asoume you are in lib directory. Right. You can open a tmux or in another terminal to cd in test directory.

In lib directory enter link command:

$ npm link

So, in other terminal, or other tmux part, link your development package to your test directory. If you are in the test directory ok, if not, just say cd test and enter the linking command:

$ npm link allowaccess

Linking step is done.

Test

Your test app is linked. Change anything in package and test it in test directory.