Conexão banco de dados laravel Mult-Tenancy
[Concluído]
Olá boa tarde!
A minha aplicação ela funciona hj com banco de dados mysq com autenticação via sanctum e se tiver apenas um banco de dados ela funciona normal.
Eu quero tornar ela em mult-tenancy.
Eu consegui fazer a troca do banco de dados normal de acordo com o curso de mult-tenancy que tem aqui na especializaTi porem quando eu faço a autenticação ele nao altoriza me retorna o erro 401.
eu preciso fazer uma aplicação que acessa por um lugar central e diferencia os tenants atravez do cnpj.
classe ManagerTenant
<?php
namespace App\Tenant;
use App\Models\Company;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class ManagerTenant {
public static function setConnection(Company $company){
DB::purge('tenant');
Config::set('database.connections.tenant.host', $company['db_hostname']);
Config::set('database.connections.tenant.database', $company['db_database']);
Config::set('database.connections.tenant.username', $company['db_username']);
Config::set('database.connections.tenant.password', $company['db_password']);
DB::setDefaultConnection('tenant'); configuração atual que consegui fazer a conexão com o banco;
DB::reconnect('->reconnect()')// nao funcionou ele sempre tentava buscar do meu banco de dados central
\DB::reconnect('->reconnect()')// nao funcionou tbm ele sempre tentava buscar do meu banco de dados central
Schema::connection('tenant')->getConnection()->reconnect();
}
}
classe LoginController
class LoginController extends Controller
{
public function showLoginForm()
{
return view('auth.login');
}
public function login(Request $request){
$company = Company::where('cnpj', $request['cnpj'])->first();
ManagerTenant::setConnection($company);
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required'],
]);
if (Auth::attempt($credentials)) { //aqui ele passa normal
$request->session()->regenerate(); // se eu dou um dd nessa $request ela me retorna true
return redirect()->intended('admin/home'); mas ao retornar esse redirect ele me retrona um erro 401 e nao deixa eu acessar a
a minha aplicação
}
E se eu remover o banco de dados central e conectar diretamente no banco que tem as informações da minha aplicação ele autentica
normalmente.
return back()->withErrors([
'email' => 'The provided credentials do not match our records.',
]);
}
alguem poderia me ajudar e fazer essa conexão multu-tenancy com autenticação sanctum.
Olá, Jean!
Tudo bem?
Tem o seu código no GitHub?
Quero entender melhor a dinâmica dele.
A autenticação é unicamente através de API com o Sanctum?
Não precisa trabalhar com sessão, porque o protocolo http não armazena estado.
Olá carlos bom dia!
Me desculpe a demora para dar um retorno, mas eu consegui uma alternativa.
realmente nao precisei trabalhar com a sessao, eu estava tentando trabalhar tudo em uma aplicação laravel, mas depois eu separei os dois.
e a minha solução foi:
deixei a parte da api em uma aplicação e fiz no estilo que vc fez na api no curso da plataforma de ead no laravel e juntei com o curso de multi-tenancy.
e o front eu fiz em vuejs.
e a identificação da base de dados eu utilizei o proprio token gerado pelo sanctum.
e funcionou perfeito..
eu gosto muito dos seus cursos, sao sempre bem explicado e com uma metodologia muito top....
Parabéns pelo seu trabalho....
muito obrigado pela atenção..
att. jean max
Show de bola amigo, parabéns!
Obrigado pelo feedback, gratidão.
Precisando de mim, pode contar comigo. TMJ!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!