Documentação
ReferênciaSDK JavaScriptNamespacesMulti-conta

Multi-conta

Manter várias contas autenticadas num dispositivo e alternar entre elas.

Alguns produtos precisam que um navegador segure mais de uma identidade ao mesmo tempo — alguém de agência com uma conta pessoal e uma de trabalho, uma pessoa de suporte com uma conta de teste ao lado da própria. O client de navegador consegue guardar todas e alternar entre elas sem sair e entrar de novo.

Só no navegador, e desligado por padrão. Ligue na criação do client:

createClient(url, key, { multiUser: true });

Com ele desligado, os métodos desta página continuam existindo, mas nada é salvo no armazenamento de contas.

Existem dois armazenamentos, e a distinção explica todo o resto:

a sessãoativa

Uma por vez. É o que toda chamada usa, guardada em nlv-<slug>-token.

o armazenamento de contasvárias

Tudo para onde você pode alternar, guardado em nlv-<slug>-token-accounts. Indexado por id de usuário — o user.id da resposta, ou a claim sub do access token.

add

add(auth) → void

Registra uma conta no armazenamento sem torná-la ativa.

const { data } = await nulvless.auth.signIn(params);
await nulvless.auth.add(data);

Você raramente precisa dele. Com multiUser ligado, uma entrada, um cadastro ou uma verificação de challenge bem-sucedida salva a conta automaticamente, e toda renovação de token a atualiza — o add serve para o caso em que você tem um Authenticated vindo de outro lugar e quer colocá-lo na lista.

switch

switch(userId) → boolean

Torna uma conta salva a sessão ativa.

const ok = await nulvless.auth.switch('usr_4c81f0a2');
if (!ok) return; // não está no armazenamento
userIdstringRequired

Vindo do list().

Devolve false em vez de lançar quando a conta não está lá, então um id desatualizado na sua interface vira um no-op em vez de um crash. Em caso de sucesso, emite account-switched.

Alternar não reautentica. Se o token guardado daquela conta expirou e não consegue renovar, a próxima chamada levanta unauthorized — trate esse evento removendo a entrada com remove, ou a pessoa vai ver uma conta quebrada no seletor para sempre.

deselect

deselect() → void

Larga a sessão ativa sem encerrá-la no servidor.

await nulvless.auth.deselect();

A conta continua no armazenamento, então o switch traz de volta na hora. É o que chamar quando o usuário sai da área autenticada para escolher ou adicionar outra conta: sem sessão ativa, a renovação automática não tem o que renovar e se cala, em vez de manter quente uma sessão que nenhuma tela usa.

Não é um sign out. A sessão continua viva no servidor e nos outros dispositivos do usuário, e nada é revogado.

A entrada da conta é escrita a partir da sessão como ela está antes de ser largada, então voltar pelo switch nunca restaura um refresh token mais antigo do que o que aquela sessão já gastou.

list

list() → AccountEntry[]

Tudo que está no armazenamento no momento.

const accounts = await nulvless.auth.list();
// [{ userId, access_token, expires_in }]

O expires_in é o tempo restante em segundos e pode ser negativo para uma entrada cujo token já venceu — útil para deixar uma opção apagada antes de a pessoa escolher.

remove

remove(userId) → void

Tira uma conta do armazenamento.

await nulvless.auth.remove(userId);

Não mexe na sessão ativa, e não desautentica ninguém no servidor. Ele esquece um token localmente, que é o comportamento certo para "remover deste dispositivo" e o errado para "sair" — para isso, signOut.

get e set

get() → Authenticated | null · set(data) → void

A sessão ativa, lida e escrita diretamente.

const active = await nulvless.auth.get();

O get devolve o que está guardado, com expires_in recalculado como segundos restantes — negativo quando o token já expirou. Ele lê o armazenamento e não faz requisição, então responde "tem alguém autenticado" instantaneamente, enquanto o getSession pergunta ao servidor pelo registro oficial.

O set substitui a sessão ativa. Recorra a ele só para restaurar uma sessão que você mesmo persistiu; os fluxos comuns guardam por você.

Próximos

Nesta página