Pular para conteúdo

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:

    https://github.com/byndcloud/quoti-auth

  • 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.