Ich baue eine SaaS-App in Laravel und möchte jeder Person/Firma eine eigene Subdomain geben. Ich habe eine users
Tabelle mit einer company_id
Spalte. Ich habe eine companies
Tabelle mit einer sub_domain
Spalte, die die Subdomain für diese Firma sein wird. Ich möchte nicht, dass Firma A die Unterdomäne von Firma B besuchen kann.Multi-Tenant-Subdomains in Laravel 5
Ich habe eine ganze Reihe von Artikeln und viele Foren gelesen, wie man damit umgeht, und ich finde keine Lösungen, die funktionieren. Ich denke, dass ich Middleware in Kombination mit Routengruppierung verwenden muss, aber ich kann es einfach nicht herausfinden. Hat jemand Erfahrung damit?
Hier ist meine routes.php
:
Route::group(['domain' => '{sub_domain}.' . env('APP_DOMAIN_NAME'), 'middleware' => 'subdomain'], function() {
Route::auth();
Route::group(['middleware' => 'guest'], function() {
//Route::get('/', '[email protected]');
Route::get('/tickets/create', '[email protected]');
Route::post('/tickets/create', '[email protected]');
});
Route::group(['middleware' => 'auth'], function() {
Route::get('/tickets', '[email protected]');
Route::get('/tickets/{id}', '[email protected]');
Route::patch('/tickets/{id}', '[email protected]');
Route::delete('/tickets/{id}', '[email protected]');
Route::get('/my-tickets', '[email protected]');
Route::get('/tickets/close/{id}', '[email protected]');
});
});
Das Problem dabei ist, dass ich erfolgreich einen anderen Sub-Domain besuchen können. Jetzt kann ich nur noch die Tickets anzeigen, die mit der Firma des aktuell angemeldeten Benutzers verknüpft sind. Ich würde gerne eine 403 werfen oder einfach nur zurück in ihre eigene Subdomain umleiten. Hier
ist die Subdomain.php
Middleware:
public function handle($request, Closure $next)
{
$request_uri = $request->server('HTTP_HOST');
$this->checkSubdomainExists($request_uri);
if(Auth::check()) {
$user = User::find(Auth::user()->id);
if($user->company->sub_domain !== Session::get('company_sub_domain')) {
Session::forget('company_sub_domain');
return 'not Authed';
}
}
return $next($request);
}
Geck !!! Vielen Dank! Also, jetzt muss ich nur eine Überprüfung für eine gültige Sub-Domain und nicht authentifizierte Benutzer hinzufügen. – dericcain