@sumor/token-middleware

Middleware de jeton

Un outil Sumor Cloud.
Plus de documentation

Un middleware de jeton pour ExpressJS.

CI Test Couverture Audit

Installation

npm i @sumor/token-middleware --save

Prérequis

Version de Node.JS

Nécessite Node.JS version 18.x ou supérieure

Nécessite le module ES Node.JS

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json :

{
  "type": "module"
}

Utilisation

Ajouter le middleware de jeton à l'application ExpressJS

import express from 'express'
import tokenMiddleware from '@sumor/token-middleware'

const app = express()
app.use(tokenMiddleware)

// charger le jeton
app.use(async (req, res, next) => {
  const tokenId = req.token.id
  const tokenInfo = await fetchToken(tokenId)
  req.token.user = tokenInfo.user
  req.token.data = tokenInfo.data
  req.token.permission = tokenInfo.permission
  next()
})

// définir le jeton
app.get('/login', async (req, res) => {
  const username = req.query.username
  const password = req.query.password
  req.token.id = await createToken(username, password)
  // il ajoutera automatiquement le jeton à l'en-tête de réponse cookie 't'
  res.send('Connexion réussie')
})

// utiliser le jeton
app.get('/api', (req, res) => {
  // vérifier l'autorisation
  req.token.check('AUTH1')

  res.send('Bonjour le monde')
})

Vérification des autorisations

// obtenir l'autorisation
req.token.permission = {
  AUTH1: ['READ', 'WRITE'],
  AUTH2: ['READ']
}
const hasAuth1 = req.token.has('AUTH1') // true
const hasAuth2 = req.token.has('AUTH2') // true
const hasAuth3 = req.token.has('AUTH3') // false

const hasAuth1Read = req.token.has('AUTH1', 'READ') // true
const hasAuth1Write = req.token.has('AUTH1', 'WRITE') // true
const hasAuth2Read = req.token.has('AUTH2', 'READ') // true
const hasAuth2Write = req.token.has('AUTH2', 'WRITE') // false

// vérifier l'autorisation
req.token.check('AUTH1') // réussite
req.token.check('AUTH2') // réussite
req.token.check('AUTH3') // lance l'erreur PERMISSION_DENIED Autorisation refusée : AUTH3
req.token.check('AUTH1', 'READ') // réussite
req.token.check('AUTH1', 'WRITE') // réussite
req.token.check('AUTH2', 'READ') // réussite
req.token.check('AUTH2', 'WRITE') // lance l'erreur PERMISSION_DENIED Autorisation refusée : AUTH2=WRITE