Skip to content

imthejano/can_i_middleware.npm.ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Can I Middleware

CanIMiddleware is a custom middleware for Express.js applications that grants access to resources based on user roles. It provides a simple and flexible way to manage authorization and control access to different parts of your application.

Installation

npm install @imjano/can_i_mw

Usage

import canIMiddleware

const canIMiddleware = require('@imjano/can_i_mw')

Create a grants object.

const grants = [
	{
		role: 'admin',
		canCreateAny: ['foo'],
		canReadAny: ['foo'],
		canUpdateAny: ['foo'],
		canDeleteAny: ['foo'],
	},
	{
		role: 'editor',
		canUpdateAny: ['foo'],
	},
	{
		role: 'viewer',
		canReadOwn: ['foo'],
	},
]

Create a onDeny function, it will be called if the request is not authorized

const onDenied = (req: any, res: any, next: any) => {
	res.status(401).json({ access: denied })
}

Create a path string to find the role into the request object

const roleLocationPath = 'req.auth.user.role'

Now you can build the middleware and implement in your app

const canI = canIMiddleware.configure({
	grants: grants,
	roleLocationPath: roleLocationPath,
	onDenied: onDenied,
})
app.get('foo/', canI.create('own', 'foo'), (req, res, next) => {
	res.status(200).json({ foo: 'bar' })
})

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published