| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- namespace App\Http\Middleware;
- use Illuminate\Support\Facades\Auth;
- use Closure;
- use Illuminate\Http\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Illuminate\Support\Facades\Route;
- use Illuminate\Routing\Redirect;
- use Illuminate\Support\Facades\Config;
- use Illuminate\Support\Facades\DB;
- class TenantMiddleware
- {
- /**
- * Handle an incoming request.
- *
- * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
- */
- public function handle(Request $request, Closure $next): Response
- {
- //return $next($request);
- //$user = Auth::user(); // oppure $request->user()
- // Esempio: controlla se l'utente è admin
- if (! $request->user()) {
- return redirect('/');
- }
-
- $this->setDatabase($request->user());
- return $next($request);
- //abort(403); // accesso negato
- }
- function setDatabase($user)
- {
-
- // Recupero i dati di connessione
- $database = $user->tenant_database;
- $username = $user->tenant_username;
- $password = $user->tenant_password;
-
- $connectionName = 'mysql';
- $config = Config::get('database.connections.' . $connectionName);
- $config = [
- 'driver' => 'mysql',
- 'host' => '127.0.0.1',
- 'port' => '3306',
- 'database' => $database,
- 'username' => $username,
- 'password' => $password
- ];
- config()->set('database.connections.' . $connectionName, $config);
- DB::purge($connectionName);
-
- //DB::setDefaultConnection('mysql');
- }
- }
|