Un outil Sumor Cloud.
Plus de documentation
Un middleware de jeton pour ExpressJS.
npm i @sumor/token-middleware --save
Nécessite la version Node.JS 16.x ou supérieure
Comme ce package est écrit en module ES,
veuillez changer le code suivant dans votre fichier package.json
:
{
"type": "module"
}
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')
})
// 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