[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rangel
Criador Rangel 12/04/2020

Pessoal, preciso de uma sugestão.

Laravel 6.x

Tenho 3 tabelas diferentes para 3 tipos de usuários diferente.

Queria apena um sistema de login para os 3 (dominio.com/login)

o que há de comum nas 3 tabelas são os campos email e password.

Qual a ideia: Quando o usuário tentar logar o sistema irá verificar na tabela 1, não tem o e-mail, vá para a tabela 2, se não para a tabela 3.

Caso não encontre o email nas 3 tabelas, então ele não está cadastrado.

Alguém tem alguma ideia?

At.te

Manager Carlos Ferreira 12/04/2020

Olá, Ediel!
Tudo bem?

É possível mudar os guards de autenticação em runtime.

Mas, antes de indicar esse caminho, preciso entender o que por que optou trabalhar com 3 tabelas diferentes?

Carlos Ferreira
Criador Rangel 12/04/2020

Meu sistema tem o admin, o consultor e o cliente. Cada um com um ambiente diferente. 

Só que a longo prazo terei de mais mil usuários final.

Mas estava pensando aqui, acho que vou jogar todos na tabela user mesmo. Porém fiquei duas dúvidas:

1º: Como farei o redirecionamento para o ambiente correto?

2º: Como coloco mais de um critério de autenticação? (e-mail, senha, tipoUsuario e status?

Dúvida extra: Como fazer para o usuário cliente não tenha permissão de acessar a área do consultor?

At.te

Rangel
Manager Carlos Ferreira 12/04/2020

Cada um terá acesso ao seu próprio dashboard?
Se sim, seria melhor deixar cada um em tabela separada mesmo. E nesse caso já setar no guad web o model correspondente.

1 - Se deixar todos na mesma tabela, pode redirecionar após fazer a autenticação manual, pelo tipo do usuário.

2 - Utilizando autenticação manual: https://laravel.com/docs/7.x/authentication#authenticating-users
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
    // The user is active, not suspended, and exists.
}

Carlos Ferreira
Criador Rangel 12/04/2020

2 - Utilizando autenticação manual: https://laravel.com/docs/7.x/authentication#authenticating-users
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
    // The user is active, not suspended, and exists.
}

 

Isso eu faço em qual controller?

Rangel
Manager Carlos Ferreira 12/04/2020

Você pode criar um controller novo para fazer isso. AuthController

Carlos Ferreira
Criador Rangel 12/04/2020

Cada um terá acesso ao seu próprio dashboard? Sim
Se sim, seria melhor deixar cada um em tabela separada mesmo. E nesse caso já setar no guad web o model correspondente. No plano ideal seria isso. Como posso fazer?

Estou fazendo o seu curso sobre MULTI-TENANCY MULTI DATABASE. 

Rangel
Manager Carlos Ferreira 12/04/2020

Não está muito claro, se cada um terá acesso ao seu próprio dashboard, então você terá várias implementações de código, uma para cada admin dashboard?

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!