Laravel'de bir SaaS uygulaması yapıyorum ve her bir kişiye/şirkete kendi alt alanlarına vermek istiyorum. company_id
sütunlu bir users
tablom var. Bu şirket için alt etki alanı olacak bir sub_domain
sütun içeren bir companies
tablom var. Şirket A'nın Şirket B'nin alt alanını ziyaret etmesini istemiyorum.Laravel'de çok kiracı alt etki alanları 5
Bunun için nasıl kullanacağım konusunda birkaç makale ve birçok foruma baktım ve işe yarayan herhangi bir çözüm bulamıyorum. Middleware'i rota gruplaması ile birlikte kullanmam gerektiğini düşünüyorum, ama bunu anlayamıyorum. Bu konuda tecrübesi olan var mı?
İşte benim routes.php
geçerli: bununla
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]');
});
});
Sorun başarılı bir şekilde başka alt alanı ziyaret edebilir olmasıdır. Şimdi, sadece şu anda oturum açmış olan kullanıcının şirketi ile ilişkili olan biletleri görebiliyorum. 403'ü atmak, hatta kendi alt alanlarına yeniden yönlendirmek istiyorum. Bu katman çalışması gerektiğini
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);
}
Dostum !!! Teşekkür ederim! Şimdi, tek yapmam gereken geçerli bir alt alan ve kimliği doğrulanmamış kullanıcılar için bir kontrol eklemektir. – dericcain