Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erro com tenant scope #205

Open
rafael-marques opened this issue Dec 8, 2020 · 6 comments
Open

Erro com tenant scope #205

rafael-marques opened this issue Dec 8, 2020 · 6 comments

Comments

@rafael-marques
Copy link

Descrição Geral do Problema

Problema Encontrado

Pessoal, tudo joia? Tenho um scope que faz uma verificação se o usuário está logado e aplica a parte de separaçãod e tenant. Porém ao tentar implementar um ACL, ele retorna erro porque o usuário ainda não está logado quando verificamos dentro de AuthServiceProvider.php. Teria alguma forma de contornar isso?

Abordagem

Tentei usar Auth::check, ou injetar usuário no boot mas não resolveu

@jedsonmelo
Copy link

Não da para realizar a lógica de checagem em um middleware?

@rafael-marques
Copy link
Author

Mas aí eu poderia registrar o gate do acl em um middleware?

@jedsonmelo
Copy link

jedsonmelo commented Dec 9, 2020

Hm, não entendi que você tava registrando um gate, o closure do Gate::define() recebe o usuário logado. Então é só você checar se essa variável está null, se tiver null é porque o usuário não está logado.

https://laravel.com/docs/6.x/authorization#gates

@rafael-marques
Copy link
Author

Entendi, mas de fato o usuário já está logado. Lendo um pouco aqui, descobri que os providers executam primeiro e mesmo que o usuário esteja logado, dentro do arquivo AuthServiceProvider.php ainda não terá essa info.

@jedsonmelo
Copy link

Sim, no AuthServiceProvider não há a possibilidade de utilizar o Auth::check(), mas a closure do gate só é executada quando o gate é chamado e como os gates são chamados geralmente em middlewares ou controllers, o usuário logado estará presente sem problemas.

@jedsonmelo
Copy link

Pro caso de separação do tenant, se precisa saber se o cara está logado ou algo do tipo, acho que o mais indicado será colocar em um middleware global. Acredito que dessa forma você garante que a aplicação já subiu/injetou todas as dependências e tbm garante que a lógica do tentant é executado em todas as requisições.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants