Quoti Auth¶
Documentação descontinuada
Esta página faz parte de uma versão descontinuada da documentação. Está presente neste acervo e neste formato enquanto seu conteúdo não é inteiramente migrado para as demais sessões desta documentação.
É o sistema de autenticação built-in que pode ser usado como middleware de autenticação nas suas APIs desenvolvidas e hospedadas em qualquer lugar.
Atualmente o Quoti Auth conta com um SDK público para ser utilizado em web servers desenvolvidos utilizando node.js e express.js como um middleware.
Tutoriais¶
- Como instalar o SDK do Quoti Auth?
## Instalação
Pelo terminal, acesse a pasta onde está o seu projeto node.js & express.js. Você pode usar o gerenciador de pacotes NPM para fazer a instação do SDK utilizando o terminal:
npm install quoti-auth
- Como utilizar nos seus endpoints?
## Inicializando o Quoti Auth
const { quotiAuth } = require('quoti-auth') quotiAuth.setup({ orgSlug: 'someOrgSlug', apiKey: 'some-api-key', logger: console })
## Usando
Injetando dados do usuário em
req.user
:app.post('/', QuotiAuth.middleware(), async (req, res) => { console.log('User:', req.user.name) res.send('OK!') })
Na prática, esse middleware fará a autenticação com a API do Quoti usando o Authorization Header que já estaria contido no seu
req.headers
. Este header pode ser:- Authorization: Bearer TOKEN - Authorization: BearerStatic TOKEN - Como checar as permissões do usuário no Quoti automaticamente?
## Checando permissões do usuário
Neste exemplo, o middleware vai checar se o usuário tem a permissão
posts.filter
. Caso ele não tenha, o Quoti Auth vai retornar um erro 401 no endpoint:app.post('/', QuotiAuth.middleware([['posts.filter']]), async (req, res) => { res.send(`OK! O usuário ${req.user.name} tem a permissão 'posts.filter'`) })
- Configurações avançadas
### Substituindo a função getUserData
const { quotiAuth } = require('quoti-auth') // Esta função será chamada passando o token do usuário que você está consultando para retornar os dados do usuário. async getUserData (bearerToken) { const url = process.env['api_url'] || 'https://api.quoti.cloud/api/v1/' const headers = { ApiKey: 'some-api-key' } const { data } = await axios.post(`${url}${this.orgSlug}/auth/login/getuser`, { token: bearerToken }, { headers } ) // O retorno dessa função será injetado em req.user return data.user } quotiAuth.setup({ orgSlug: 'someOrgSlug', apiKey: 'some-api-key', getUserData: getUserData, logger: console })
Troubleshooting¶
- Como utilizar o Quoti Auth em projetos sem express.js?
Atualmente, disponibilizamos o pacote de NPM do Quoti Auth apenas para express.js. Porém, é possível utilizar os mesmos recursos em outros plugins de web servers, como o fastify.js.
Para isso, você deverá criar seu próprio middleware e realizar requisições REST passando o token do usuário para a API de autenticação do Quoti (
https://quoti.cloud/{organização}/auth/login/getuser
).Com o resultado dessa API o seu middleware poderá retornar para o endpoint os dados do usuário que foram retornados, como:
nome, email, permissões e grupos
.Você também pode analizar os códigos do middleware disponibilizado por nós e realizar pequenas adaptações para ser utilizado no seu webserver:
- Como utilizar o Quoti Auth em projetos em outras linguagens (Python, C#, GO, etc.)?
Atualmente, disponibilizamos o Quoti Auth como pacote apenas para a linguagem Node.js. Porém, é possível utilizar os mesmos recursos de autenticação encapsulados em endpoints de web servers desenvolvidos em outras linguagens.