@sumor/token-middleware

token-middleware

Uma Ferramenta Sumor Cloud.
Documentação Adicional

Um middleware de token para ExpressJS.

CI Teste Cobertura Auditoria

Instalação

npm i @sumor/token-middleware --save

Pré-requisitos

Versão do Node.JS

Requer Node.JS na versão 18.x ou superior

Requer módulo ES do Node.JS

Como este pacote é escrito em módulo ES, por favor altere o seguinte código em seu arquivo package.json:

{
  "type": "module"
}

Uso

Adicionar middleware de token ao aplicativo ExpressJS

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

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

// carregar token
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()
})

// definir token
app.get('/login', async (req, res) => {
  const username = req.query.username
  const password = req.query.password
  req.token.id = await createToken(username, password)
  // ele automaticamente adicionará o token ao cabeçalho de resposta do cookie 't'
  res.send('Login com Sucesso')
})

// usar token
app.get('/api', (req, res) => {
  // verificar permissão
  req.token.check('AUTH1')

  res.send('Olá Mundo')
})

Verificação de permissão

// obter permissão
req.token.permission = {
  AUTH1: ['LER', 'ESCREVER'],
  AUTH2: ['LER']
}
const temAuth1 = req.token.has('AUTH1') // verdadeiro
const temAuth2 = req.token.has('AUTH2') // verdadeiro
const temAuth3 = req.token.has('AUTH3') // falso

const temAuth1Leitura = req.token.has('AUTH1', 'LER') // verdadeiro
const temAuth1Escrita = req.token.has('AUTH1', 'ESCREVER') // verdadeiro
const temAuth2Leitura = req.token.has('AUTH2', 'LER') // verdadeiro
const temAuth2Escrita = req.token.has('AUTH2', 'ESCREVER') // falso

// verificar permissão
req.token.check('AUTH1') // aprovado
req.token.check('AUTH2') // aprovado
req.token.check('AUTH3') // lançará Erro PERMISSION_DENIED Permissão negada: AUTH3
req.token.check('AUTH1', 'LER') // aprovado
req.token.check('AUTH1', 'ESCREVER') // aprovado
req.token.check('AUTH2', 'LER') // aprovado
req.token.check('AUTH2', 'ESCREVER') // lançará Erro PERMISSION_DENIED Permissão negada: AUTH2=ESCREVER