41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Config;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use App\Models\Intranet\Cliente;
|
|
use App\Enums\Intranet\Sistema;
|
|
|
|
class SetClienteDatabase
|
|
{
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
$link = $request->customer ?? $request->header('X-Cliente');
|
|
|
|
if (!$link) {
|
|
return response()->json(['message' => 'Cliente não informado.'], Response::HTTP_BAD_REQUEST);
|
|
}
|
|
|
|
$cliente = Cliente::where('sistema_id', Sistema::CONECTASUS)
|
|
->where('link', $link)
|
|
->first();
|
|
|
|
if (!$cliente) {
|
|
return response()->json(['message' => 'Cliente não encontrado.'], Response::HTTP_NOT_FOUND);
|
|
}
|
|
|
|
if ($cliente->ativo === false) {
|
|
return response()->json(['message' => 'O cliente está com o status inativo.'], Response::HTTP_UNAUTHORIZED);
|
|
}
|
|
|
|
Config::set('database.default', $cliente->link);
|
|
|
|
$request->attributes->set('cliente', $cliente);
|
|
|
|
return $next($request);
|
|
}
|
|
}
|