AuthSerciceProvider
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
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.
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..
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
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.
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
as tabelas de ACL estao sim no banco do cliente
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
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
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.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!