Coder Social home page Coder Social logo

fastify-jwt-authz's Introduction

Fastify JWT Authz

Created by Ethan Arrowood

js-standard-style Build Status

fastifyJWTAuthz is a fastify plugin for verifying an authenticated request.user scope. Registering the plugin binds the jwtAuthz method to the fastify request instance. See the demo below on how to use the plugin.

const fastify = require('fastify')()
const jwt = require('fastify-jwt')
const jwtAuthz = require('fastify-jwt-authz')

fastify.register(jwt, {
  secret: 'superSecretCode'
})
fastify.register(jwtAuthz)

fastify.get('/api', {
  beforeHandler: [
    function(request, reply, done) {
      request.jwtVerify(done)
      /* The user's JWT auth token is
       * connected to the request object 
       * under `headers.authentication`.
       * 
       * The jwtVerify method will verify 
       * the JWT token with the secret.
       * 
       * If it verifies, the user object is 
       * populated onto the request object 
       * which is passed to the next function.
       * */
    }, 
    function(request, reply, done) {
      request.jwtAuthz(['read:data', 'write:data'], done)
      /* jwtAuthz will read the verified user's
       * scope off of the request object. It will 
       * then compare the scopes defined above to
       * the user's scopes aquired by the JWT verification
       * method.
       * */
    },
  ],
}, (request, reply) => {
  fastify.log.info('reached API endpoint')
  reply.send({ userVerified: true })
})

jwtAuthz takes a list of scopes for verification. Additionally, it takes an optional callback parameter. It returns a promise otherwise.

fastify-jwt-authz's People

Contributors

bencehornyak avatar ethan-arrowood avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fastify-jwt-authz's Issues

Increase test coverage to 100%

Using node-tap increase the code coverage to 100% across all branches. Add the travis markdown widget to the README. This module will support Node.JS 4+.

Publish to npm

After documentation (#1) and unit tests (#2) are complete. Publish version 1.0.0 to npm.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.