@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 Node.JS

Nécessite la version Node.JS 16.x ou supérieure

Require Node.JS ES module

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

{
  "type": "module"
}

Utilisation

Ajouter un 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 idJeton = req.token.id
  const infosJeton = await chercherJeton(idJeton)
  req.token.utilisateur = infosJeton.utilisateur
  req.token.donnees = infosJeton.donnees
  req.token.permission = infosJeton.permission
  next()
})

// définir le jeton
app.get('/login', async (req, res) => {
  const nomUtilisateur = req.query.username
  const motDePasse = req.query.password
  req.token.id = await creerJeton(nomUtilisateur, motDePasse)
  // cela 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 les permissions
  req.token.vérifier('AUTH1')

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

Vérification des permissions

// obtenir les permissions
req.token.permission = {
  AUTH1: ['LIRE', 'ECRIRE'],
  AUTH2: ['LIRE']
}
const aAuth1 = req.token.a('AUTH1') // true
const aAuth2 = req.token.a('AUTH2') // true
const aAuth3 = req.token.a('AUTH3') // false

const aAuth1Lire = req.token.a('AUTH1', 'LIRE') // true
const aAuth1Ecrire = req.token.a('AUTH1', 'ECRIRE') // true
const aAuth2Lire = req.token.a('AUTH2', 'LIRE') // true
const aAuth2Ecrire = req.token.a('AUTH2', 'ECRIRE') // false

// vérifier les permissions
req.token.vérifier('AUTH1') // valide
req.token.vérifier('AUTH2') // valide
req.token.vérifier('AUTH3') // lance une erreur PERMISSION_DENIED Autorisation refusée : AUTH3
req.token.vérifier('AUTH1', 'LIRE') // valide
req.token.vérifier('AUTH1', 'ECRIRE') // valide
req.token.vérifier('AUTH2', 'LIRE') // valide
req.token.vérifier('AUTH2', 'ECRIRE') // lance une erreur PERMISSION_DENIED Autorisation refusée : AUTH2=ECRIRE