Conexão ao banco de dados tenant a partir de um código do usuário
Boa tarde Professor!
Estou fazendo o curso de Multi Tenancy Multi Database onde você ensina o método por domínios.
No meu caso, não cadastrarei as empresas manualmente, elas farão isso no momento de registro na plataforma.
Ao se registrar, crio o banco de dados e uma coluna na tabela "users" com um código único de identificação de 10 dígitos.
Já consegui fazer a criação de banco de dados e tabelas automaticamente no momento do registro.
Porém não consego ver como conectar o usuário ao banco de dados usando o código de 10 dígitos gerado (que seria o domínio nesse caso).
Não consigo criar o Middleware Tenant com essa lógica, pode me ajudar?
Olá, Miqueias!
Tudo bem?
Você pode usar esse código único por empresa para alternar o banco.
Mas, a pergunta é como saber se o usuário que está acessando é da empresa x ou empresa y?
Uma das formas é através do domínio ou subdomínio (igual no curso).
Outra maneira possível é ter no formulário de login um combobox com todas as empresas que você tem cadastrado, aí esse usuário indica qual empresa ele vai se conectar.
Pegou a ideia amigo?
No caso a empresa é atrelada ao usuário.
Consegui recuperar o valor da tabela "code" no middleware com o seguinte código:
Fiz a verificação se o usuário está logado, ao invés de verificar o URL, já que o URL do dashboard é o mesmo para todos.
Segue meu middleware e ManagerTenant: (o que acha desse modelo?)
A relação entre users x empresa é 1:1?
Mas, por que isso?
$tenant = $this->getTenant($user_code);
Na tabela users não tem uma coluna com o valor do tenant? tenant_id
Porque ficou redundate essa consulta do User.
Tipo, aqui você tem um objeto de user:
$user_code = Auth::user()->code;
Aqui você busca o mesmo user pelo user já no objeto:
// getTenant
return User::where('code', $code)->first();
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!