1.0.22 • Published 5 years ago
boilerplate-auth-api v1.0.22
Little boilerplate to create public and private API. Based on Express and Jsonwebtoken
Install
$ npm install boilerplate-auth-api
Usage
routes(app, express.Router(), options?).bindRoutes(baseUrl, Routes)
options
:
jwtSecret
is your jsonwebtoken secret or Private keyjwtOptions?
: JsonWebToken Options, more info here
const routes = require('boilerplate-auth-api');
const JWT_SECRET = 'MYAWESOMESECRET';
const publicHandler = (req, res, next) => res.status(200).send('Hello World !');
const userHandler = (req, res, next) => res.status(200).send(req.user);
const multipleScopeHandler = (req, res, next) => res.status(200).send(req.user);
const authHandler = (req, res, next) => res.status(200).send(req.user);
routes(app, express.Router(), {
jwtSecret: JWT_SECRET,
}).bindRoutes('/api/v1', [
/*Public Routes */
{method:"get", url:'/helloWorld', handler:publicHandler, scope:null},
/*Route for USER only */
{method:"get", url:'/user', handler:userHandler, scope: ['user']},
/*Route for USER && MODERATOR scope only */
{method:"get", url:'/multipleScope', handler:multipleScopeHandler, scope: ['user', 'moderator']},
/*Route for ADMIN scope only */
{method:"get", url:'/admin', handler:adminHandler, scope: ['admin']},
]
);
const {sign} = require('jsonwebtoken');
const token = sign({
uid:'user/123456789',
username: 'Lerollq',
scope:['user', 'moderator']
}, JWT_SECRET, {
subject:'my-email@gmail.com',
issuer:'Issuer',
algorithm:'HS512'
});
// Token = eyJhbGciOiJIUzI1NiIsIn......
// Set Token in Authorization headers as Bearer Token
// Like 'Bearer eyJhbGciOiJIUzI1NiIsIn......'
get("/api/v1/helloWorld")
/*
Will result in
Status: 200
Response: {
'Hello World !'
}
*/
get("/api/v1/user")
/*
Will result in
Status: 200
Response: {
"uid": "user/123456789",
"username": "Lerollq",
"scope": [
"user",
"moderator"
],
"iat": 1555951799,
"iss": "Issuer",
"sub": "my-email@gmail.com"
}
*/
get("/api/v1/multipleScope")
/*
Will result in
Status: 200
Response: {
"uid": "user/123456789",
"username": "Lerollq",
"scope": [
"user",
"moderator"
],
"iat": 1555951799,
"iss": "Issuer",
"sub": "my-email@gmail.com"
}
*/
get("/api/v1/admin")
/*
Will result in
Status: 401
Response: {
'Unauthorized'
}
*/
1.0.22
5 years ago
1.0.21
5 years ago
1.0.20
5 years ago
1.0.19
5 years ago
1.0.18
5 years ago
1.0.17
5 years ago
1.0.16
5 years ago
1.0.15
5 years ago
1.0.14
5 years ago
1.0.13
5 years ago
1.0.12
5 years ago
1.0.11
5 years ago
1.0.10
5 years ago
1.0.9
5 years ago
1.0.8
5 years ago
1.0.7
5 years ago
1.0.6
5 years ago
1.0.5
5 years ago
1.0.4
5 years ago
1.0.3
5 years ago
1.0.2
5 years ago
1.0.1
5 years ago
1.0.0
5 years ago