Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //RouteServiceProvider
- protected function mapTenantRoutes()
- {
- Route::middleware(['tenant.domain','web'])
- ->namespace($this->namespace)
- ->group(base_path('routes/tenant.php'));
- }
- //App/Htt/Kernel
- protected $middleware = [
- \App\Http\Middleware\CheckForMaintenanceMode::class,
- \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
- \App\Http\Middleware\TrimStrings::class,
- \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
- \App\Http\Middleware\TrustProxies::class,
- //Tenant
- \App\Http\Middleware\Tenant\TenantMiddleware::class,
- \App\Http\Middleware\Tenant\TenantFilesystems::class,
- ];
- protected $routeMiddleware = [
- 'auth' => \App\Http\Middleware\Authenticate::class,
- 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
- 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
- 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
- 'can' => \Illuminate\Auth\Middleware\Authorize::class,
- 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
- 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
- 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
- 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
- //Tenant
- 'tenant.domain' => \App\Http\Middleware\Tenant\CheckMainDomain::class,
- 'tenant.not.domain' => \App\Http\Middleware\Tenant\NotMainDomain::class,
- ];
- //Http/Middleware/Tenant/TenantMiddleware
- public function handle($request, Closure $next)
- {
- $manager = app(ManagerTenant::class);
- if ($manager->domainIsMain())
- {
- return $next($request);
- }
- $company = $this->getCompany($request->getHost());
- if (!$company && $request->url() != route('404.tenant')) {
- return redirect()->route('404.tenant');
- } else if($request->url() != route('404.tenant') && !$manager->domainIsMain() ) {
- $manager->setConnection($company);
- $this->setSessionCompany($company->only([
- 'name', 'uuid',
- ]));
- }
- return $next($request);
- }
- public function getCompany($host)
- {
- return Company::where('domain', $host)->first();
- }
- public function setSessionCompany($company)
- {
- session()->put('company', $company);
- }
- //App\Http\Middleware\Tenant\CheckMainDomain
- public function handle($request, Closure $next)
- {
- if ($request->getHost() != env('MAIN_DOMAIN')) {
- //dd(env('MAIN_DOMAIN'));
- return abort(401, 'Unauthorized access!');
- }
- return $next($request);
- }
- //App\Http\Middleware\Tenant\NotMainDomain
- public function handle($request, Closure $next)
- {
- if ($request->getHost() === env('MAIN_DOMAIN')) {
- return abort(401, 'Unauthorized access!');
- }
- return $next($request);
- }
- //Routes/tenant.php
- Route::group(['namespace'=>'Tenant'], function(){
- Route::get('/', 'TenantController@index')->name('tenant');
- Route::get('companies', 'CompanyController@index')->name('company.index');
- Route::get('company/create', 'CompanyController@create')->name('company.create');
- Route::post('company', 'CompanyController@store')->name('company.store');
- Route::get('company/{domain}', 'CompanyController@show')->name('company.show');
- Route::get('company/edit/{domain}', 'CompanyController@edit')->name('company.edit');
- Route::put('company/{id}', 'CompanyController@update')->name('company.update');
- Route::delete('company/{id}', 'CompanyController@destroy')->name('company.destroy');
- });
- ?>
Advertisement
Add Comment
Please, Sign In to add comment