1.1.0 • Published 7 years ago

express-auth-route v1.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

Express Authorize Route

Travis bitHound bitHound

npm npm

Helper for authorize access to Express routers with token.

Install

$ npm install express-auth-route --save

Example

const AuthRoute = require('express-auth-route');
const auth = new AuthRoute();

auth.generateToken(async(params)=>{
	... your logic here
	return token;
});

auth.checkAccessToken(async (req, token, params)=>{
	... your logic here
	// if you need in your next middlewares or endpoints
	req.access_token = token;
	// if you have fetched user by the token you can pass in the next
	req.user = user;

	return; // pass the check

	// or throw AuthRoute.PredefinedError('access_denied');
});

// Add at least one authenticator
// when request come grant_type must be equals to your authenticator
// you can create your custom authenticator, the only required implemented method is 'authenticate(req, done)'
auth.addAuthenticator('password', new AuthRoute.PasswordAuthenticator(async (username, password)=>{
	... your logic here
	if (username == 'admin' && password == '1234') return {username:'admin'};
	else throw AuthRoute.PredefinedError('invalid_grant');
}));

// Authorizers are optional
auth.addAuthorizer('admin', async (req, ...parameters)=>{
	... your logic here
	if (isAdmin(req.user)) next();
	else throw AuthRoute.PredefinedError('Access Denied!');	// Error will be handled by AuthRoute
});


// now defined the express routes

// GET /token return the access_token if authenticate success
router.get('/token', auth.authenticate());

// GET /secure render the secure-page only if we are authorized
router.get('/secure', auth.authorize(), function(req, res){
	res.render('secure-page');
});
// GET /secure/admin render the secure-page only if we are authorized and we pass the admin authorizer
router.get('/secure/admin', auth.authorize('admin', ...parameters), function(req, res){
	res.render('secure-page');
});

How work

Coming soon.

Credits

License

MIT

Copyright (c) 2016 Sergio Donati