[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Kaio Tavares
Criador Kaio Tavares 24/10/2018

Lógica de ACL em AuthSerciceProvider retorna o banco de dados principal é não do Cliente, como resolver ?? Excelente curso, me ajuda bastante porém tô com esse problema 

Manager Carlos Ferreira 24/10/2018

Olá, Kaio!
Tudo bem?

Primeiramente quero agradecer o feedback, fico feliz saber que esteja gostando.

É por conta do ciclo de vida no Laravel, os Providers "executam" antes dos Middlewares, e por esse motivo ainda não alternou a conexão com o banco de dados, sendo assim, ainda está conectado ao banco de dados principal (ainda).

O que fazer?
No AuthSerciceProvider precisa alternar a conexão, utilizando a regra que aplicamos no Middleware.

Carlos Ferreira
Criador Kaio Tavares 24/10/2018

Boa noite Carlos, fiz o que me foi indicado, porem foi sem sucesso, consigo acessar a base de dados do cliente quando eu comento a logica de acl no AuthServiceProvider, mas fico sem permissões no sistema..

Kaio Tavares
Criador Kaio Tavares 24/10/2018

Boa noite, me desculpe a insistencia, verifiquei se o dominio principal e iqual ao dominio atual, porem pra eu pegar o contrario para setar a conexao eu investi essa logina !=, não pega o principal e entra no dominio do cliente como previa, injeto o TenantMiddleware para ter acesso ao getCompany e setConnection, crio o objeto $company para receber um company com domain iqual ao atual, debug e me retorna como esperado, entao usando objeto de ManagerTenant seto a conexao usando o metodo setConnection com parametro $company ja recuperado... Porem quando mando setar essa conexao para poder usar as permissoes e entrar no sistema com as permissoes concedidas, ele me manda para o banco do cliente mas consultando a tabela companies onde nesse caso não existe! se puder me da uma luz nessa alternação de conexao dentro do AuthServiceProvider agradeco desde ja

segue o print https://drive.google.com/file/d/11zzshUpN8SQ93vQVxPG1mcX7dThZd6lB/view?usp=sharing

Kaio Tavares
Manager Carlos Ferreira 24/10/2018

Usa essa ferramenta para fazer upload de imagens, quando precisar: https://uploaddeimagens.com.br/

Você conseguiu conectar a aplicação no banco de dados do tenant em questão diretamente no provider. Passo 01, Ok!

Mas, uma dúvida. Onde você colocou a tabela de permissions?
A tabela de roles (ou perfis) e permissions deve ficar no banco do cliente.

Carlos Ferreira
Criador Kaio Tavares 24/10/2018

ele me conecta no banco do cliente mas eu mando um objeto de company onde so existe no banco principal e me da uma exception ex: "adv_nextsistemas.companies not found"

mando esse objeto company pq o setConnection precisa de um paramentro pra setar a conexao

Kaio Tavares
Criador Kaio Tavares 24/10/2018

as tabelas de ACL estao sim no banco do cliente 

Kaio Tavares
Criador Kaio Tavares 24/10/2018

Carlos, por fim consegui, fui debugando e vi que o banco cliente tentava verificar companies no TenantMiddleware porem nao existe pq não existe no banco cliente, entao so entra la se for dominio pricinpal caso contrario ele verifica ali a logica de ACL

segue os prints modificados! se puder me passaar um feedback agradeço!

http://uploaddeimagens.com.br/imagens/authserviceprovider-jpg

http://uploaddeimagens.com.br/imagens/tenantmiddleware-jpg

Kaio Tavares
Criador Kaio Tavares 24/10/2018

Boa tarde Carlos, estive estudando o codigo, vi ue não ha necessidade de fazer logia e setar conexao do AuthServiceProvider, para o TEnantMiddleware, porem so e setado mesmo apenas deixei o AuthServiceProvider sem a logica de acl e apenas coloquei a logica de ACL quando setar o banco do cliente la no TenantMiddleware!

print https://uploaddeimagens.com.br/imagens/tenantmiddlewareandacl-jpg

Kaio Tavares
Manager Carlos Ferreira 24/10/2018

Salve Kaio!

Se quiser postar o código no GitHub dou uma analisada para você, e passo um feedback melhor.

Ou se preferir postar no Bitbucket em privado e liberar o acesso para o e-mail [email protected]

No aguardo.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!