1.0.22 • Published 5 years ago

boilerplate-auth-api v1.0.22

Weekly downloads
2
License
ISC
Repository
github
Last release
5 years ago

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 key
  • jwtOptions?: 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