SuperAdmin
Nesse cenário é possível ter um usuário com acesso a todos os posts cadastrados de todos os usuários???
Olá, André!
Tudo bem?
Você pode fazer um if para validar se o usuário é super adim (aqui depende do critério que definiu para identificar o admin) e depois disso você pode consultar os dados sem o escopo global.
Veja: https://laravel.com/docs/5.8/eloquent#query-scopes em "Removing Global Scopes"
Também dentro do próprio método boot você valida se o usuário é super admin, caso seja não aplica o scope global que filtra os registros por tenant.
Carlos, não consigo fazer a verificação dentro da Model no método boot
Erro: Call to a member function isAdmin() on null
O usuário está autenticado?
Talvez está usando essa lógica sem o usuário estar autenticado.
Pode usar o método check para validar isso:
if (Auth::check()) {
// ...
}
Como mencionei em outro post aqui do fórum o Auth:check não funciona dentro do método static boot();
Retorna sempre null mesmo logado.
Pesquisando encontrei esse post abaixo:
Auth::check()
is using session to check if aUser
is autheticated.
In Laravel the session is initialized via middleware, and all the middlewares execute after the service providers boot phase
So, in your service provider you can't access the session: it has not been initialized yet
The solution would be to check for authentication and do your work in a middleware, and let this middleware execute after this:\Illuminate\Session\Middleware\StartSession::class
That is the middelware that starts the session
Porém eu não sei onde fazer esse ajuste
É por conta do ciclo de vida do Laravel, o método boot é chamado antes mesmo de iniciar a sessão.
Você precisa invocar o middleware que inicia a sessão antes.
Se conferir esse middleware está definido em $middlewareGroups no arquivo app/http/Kernel.php
Você precisa definir como um middleware global, em $middleware
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!