connect-concierge
v0.16.47
Published
Connect middlewares for VTEX backoffice app Concierge
Maintainers
Keywords
Readme
connect-concierge 
Coleção de middlewares usados na aplicação de backoffice Concierge. É compatível com connect e grunt-connect (para poder ser usado em desenvolvimento).
Ao desenvolver um admin, deve ser usado com o grunt-vtex
Instalação
$ npm install --save-dev connect-conciergePré-requisitos
- O index do admin deve ser um
.dust. Se ele é um.html, basta alterar a extensão. - O
package.jsondo admin deve conter a chave paths. Exemplo:
"paths": [
"/admin/checkout"
],Integrando com um admin
No Gruntfile do admin desejado:
GruntVTEX = require 'grunt-vtex'
Concierge = require 'connect-concierge'
module.exports = (grunt) ->
pkg = grunt.file.readJSON('package.json')
concierge = new Concierge({grunt: grunt, verbose: grunt.option('verbose')})
middlewares = concierge.getMiddlewares()
defaultConfig = GruntVTEX.generateConfig(grunt, pkg, {
relativePath: 'admin/checkout'
replaceGlob: "build/**/{index.html,index.dust,app.js,app.min.js}"
proxyTarget: 'https://portal.vtexcommercebeta.com.br:443'
additionalMiddlewares: middlewares
})Detalhes importantes:
- A opção
relativePathdeve seguir o modelo 'admin/nome-do-admin'. Barras extras quebrarão sua aplicação - Certifique-se que a opção
replaceGlobinclui o index.dust
Também é necessário incluir a task getTags do grunt-vtex no inicio da task default:
tasks = {
default: ['getTags', 'build', 'connect', 'watch']
}Configure o NODE_ENV para usar somente as opções de desenvolvimento:
GruntVTEX = require 'grunt-vtex'
Concierge = require 'connect-concierge'
process.env.NODE_ENV = 'development'Ignorando middlewares
options = {
exclude: ['licenseManagerCall', 'renderTemplate']
}
concierge = new Concierge(grunt: grunt, verbose: grunt.option('verbose'))
middlewares = concierge.getMiddlewares(options)Helpers
Diversos helpers podem ser usados no seu index.dust para tornar sua vida mais fácil!
topbarData
Busca informações da Topbar do License Manager
<script>vtex.topbar.topbar = new vtex.topbar.Topbar({@topbarData /})</script>version
Resolve versão mais recenente de um app no major especificado.
<script src='//io.vtex.com.br/alfredo-ui/{@version app="alfredo-ui" major="2" /}/alfredo-tpls.js'></script>O helper version também recebe um parâmetro opcional env. Default: stable
aclData
Busca dados de ACL para um determinado app
<script>window.vtex.acl = {@aclData app="OMS" /}</script>conciergeData
Expôe informações de usuário (userId e email), accountName, e environment
<script>window.vtex.conciergeData = {@conciergeData /}</script>featuresData
Expôe as feature flags disponíveis
<script>window.vtex.features = {@featuresData /}</script>Middlewares
O método getMiddlewares() devolve um array com os middlewares para desenvolvimento já na ordem correta.
Alguns middlewares são usados apenas em ambiente de desenvolvimento, outros apenas em produção:
- prepareReq (dev): Prepara dados da requisição
- Parse de cookies
- checkHosts: Verifica se o host é VTEX
- replaceHost (dev): Altera o host
.vtexlocal.com.brpara.vtexcommercebeta.com.br - redirectToKnownHost (prod): Se o host não estiver na lista de hosts conhecidos, consulta o License Manager para saber o accountName e redireciona para
.vtexcommercestable. Hosts conhecidos:- vtexcommerce
- vtexcommercebeta
- vtexcommercealfa
- vtexcommercestable
- vtexlocal
- vtexpayments
- vtexlab
- myvtex
- connectVtexid (dev): Utiliza o módulo connect-vtexid para resolver autenticação
- getAccountName: Resolve accountName, respeitando a ordem de prioridade:
- Header
X-VTEX-AccountName - Cookie
concierge-account - Querystring
an - Host
- Header
- getEnvironment: Resolve environment, respeitando a ordem de prioridade:
- Header
X-VTEX-Environment - Cookie
concierge-env - Querystring
environment - Host
- Header
- resolveTags (dev): Verifica existencia do
tags.jsonbaixado pelo grunt - resolveTemplate (dev): Procura o arquivo index.dust no filesystem
- licenseManagerCall: Busca informações da Topbar e faz cache por 5 minutos
- featureToggleCall: Busca informações das feature flags disponiveis para esse admin. Faz cache por 8 minutos
- renderTemplate: Devolve resposta com html renderizado
