Qual o controle para saber se um usuário está conectado?

<vtex.cmc:accountUserProfile />

Eu consegui encontrar essa tag que me retorna as informações do usuário, mas tem algum jeito de pegar só uma flag que me diz se existe um usuário conectado ou não? Ou como é feito esse teste normalmente para definir o botão de entrar/sair?

Você pode usar o controle <vtex.cmc:welcomeMessage />, que mostra uma mensagem de boas vindas, caso o usuário esteja logado exibe junto a mensagem um link sair, caso contrário exibe um link entrar

Ok, eu acabei de ver que não é tudo o que eu queria... Mas se eu quiser fazer uma div no header com uma Ul e informações do usuário se tiver, como eu faria?

Esse controle é bastante limitado para o que eu gostaria de fazer...

Você pode puxar os dados do usuário logado através da API do Master Data, veja a documentação.

http://raml.vtexlab.com.br/masterdata/

http://raml.vtexlab.com.br/masterdata/examples.htm

Interessante, mas eu estou tendo dificuldade com essa documentação. Ela realmente só tem 2 páginas?

Isso deveriam ser requisições por Ajax? Entendi certo?

Não tem nenhum help/tutorial/qualquer outra coisa sobre?

Olá @Thomaz Diniz​ a documentação mais atualizada sobre o MasterData se encontra nesse link: https://documenter.getpostman.com/view/164907/masterdata-api-v102/2TqWsD

Abraço

É isso mesmo @Thomaz Diniz​, vc entendeu certo, vc pode fazer uma requisição via ajax. No primeiro link tem os métodos e no segundo tem exemplo de retorno.

No seu caso, seria uma consulta na entidade cliente (CL), então na sua URL você pode usar search com uma condição _where igual ao e-mail do cliente logado.

Por exemplo:

/dataentities/CL/search?_where=email=email_do_usuario@dominio.com&_fields=firstName,lastName,email

_where -> é a condição da consulta

_fields -> são os campos que serão exibidos na consulta

No link que o @Thiago Alipio​ passou tem vários exemplos.

Se eu puder abusar só mais uma vez...

1° Como eu recuperaria o email do usuário atual (No caso o usuário que está conectado na sessão atual do site)? Tem alguma variável de sessão com isso?

2° eu fiz alguns testes de requisição simples nessa mesma url que você me deu (inclusive, mt obrigado pela paciência para explicar como funciona!). Só que ela me retornou : {"Message":"Os Campos 'firstName,lastName' não foram configurados para ter acesso publico de 'Leitura'."}

Eu fui olhar no Master Data para confirmar e, aparentemente os campos estão públicos, sim. Como eu ainda não sei como recuperar o email do usuário logado no momento, eu coloquei o meu email, msm (thomaz_diniz@hotmail.com); Não fiz parse para Json, nem nada do tipo. Estava querendo apenas ver o que esssa url me retorna.

hmerro1

var l = "http://api.vtex.com/simonejoias/dataentities/CL/search?_where=email=thomaz_diniz@hotmail.com&_fields=firstName,lastName,email"; req = new XHttpRequest(); req.onreadystatechange = function(){ if (this.readyState == 4 && this.status == 200) { console.log(this.responseText); }} req.open("GET",l,true); req.send();

EDIT:

Acabei de verificar que tinha feito essa mudança faz um tempo e não tinha colocado para indexar, erro meu!

O resultado deu certo. Foi retornado corretamente depois da publicação.

Mas ainda gostaria de saber, se possível, como recuperar o email do usuário.

Você pode recuperar o e-mail do cliente logado consultando o dataLayer, é um JSON com algumas informações da loja.

Resolvido, Obg @Gustavo V​ e @Thiago Alipio​