Skip to content

Commit

Permalink
Support multiple platform domains
Browse files Browse the repository at this point in the history
  • Loading branch information
NFarrington committed Mar 23, 2019
1 parent 040e409 commit cca7800
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 47 deletions.
27 changes: 25 additions & 2 deletions app/Providers/RouteServiceProvider.php
Expand Up @@ -39,9 +39,9 @@ public function map()
{
$this->mapApiRoutes();

$this->mapWebRoutes();
$this->mapPlatformRoutes();

//
$this->mapWebRoutes();
}

/**
Expand All @@ -58,6 +58,29 @@ protected function mapWebRoutes()
->group(base_path('routes/web.php'));
}

/**
* Define the "platform" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapPlatformRoutes()
{
$platformAliases = config('app.platform_aliases') ?: [];

$primaryDomain = parse_url(config('app.url'), PHP_URL_HOST);
$secondaryDomains = is_string($platformAliases) ? explode(',', $platformAliases) : $platformAliases;

$domains = array_merge([$primaryDomain], $secondaryDomains);
foreach ($domains as $domain) {
Route::domain($domain)
->middleware('web')
->namespace($this->namespace)
->group(base_path('routes/platform.php'));
}
}

/**
* Define the "api" routes for the application.
*
Expand Down
2 changes: 2 additions & 0 deletions config/app.php
Expand Up @@ -59,6 +59,8 @@

'url' => env('APP_URL', 'http://localhost'),

'platform_aliases' => env('APP_PLATFORM_ALIASES', ''),

'force_scheme' => env('FORCE_SCHEME'),

'asset_url' => env('ASSET_URL', null),
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Expand Up @@ -8,7 +8,7 @@ services:
context: .
target: nginx
ports:
- 127.0.0.1:80:8080
- "127.0.0.1::8080"
depends_on:
- php-fpm

Expand Down
43 changes: 43 additions & 0 deletions routes/platform.php
@@ -0,0 +1,43 @@
<?php

Route::get('/', 'Site\SiteController@index')->name('site.home');
Route::get('about', 'Site\SiteController@about')->name('site.about');
Route::get('contact', 'Site\SiteController@contact')->name('site.contact');

Route::get('terms-of-use', 'Platform\InfoController@terms')->name('platform.terms');
Route::get('privacy-policy', 'Platform\InfoController@privacy')->name('platform.privacy');

Route::get('platform/login', 'Platform\LoginController@showLoginForm')->name('platform.login');
Route::post('platform/login/vatsim', 'Platform\VatsimLoginController@login')->name('platform.login.vatsim');
Route::get('platform/login/vatsim/callback', 'Platform\VatsimLoginController@callback')->name('platform.login.vatsim.callback');
Route::get('platform/login/two-factor', 'Platform\TwoFactorAuthController@showForm')->name('platform.login.two-factor');
Route::post('platform/login/two-factor', 'Platform\TwoFactorAuthController@login');

Route::get('platform/register', 'Platform\RegistrationController@showRegistrationForm')->name('platform.register');
Route::post('platform/register', 'Platform\RegistrationController@register')->name('platform.register');
Route::get('platform/register/verify/{token}', 'Platform\EmailVerificationController@verifyEmail')->name('platform.register.verify');

Route::post('platform/logout', 'Platform\LoginController@logout')->name('platform.logout');

Route::get('platform', 'Platform\DashboardController@platform')->name('platform');
Route::get('platform/dashboard', 'Platform\DashboardController@dashboard')->name('platform.dashboard');

Route::resource('platform/urls', 'Platform\UrlController', ['as' => 'platform']);

Route::resource('platform/organizations', 'Platform\OrganizationController', ['as' => 'platform']);
Route::resource('platform/organizations.prefix', 'Platform\OrganizationPrefixController', ['as' => 'platform'])->only(['create', 'store']);
Route::resource('platform/organizations.users', 'Platform\OrganizationUsersController', ['as' => 'platform'])->only(['store', 'destroy']);

Route::get('platform/settings', 'Platform\SettingsController@edit')->name('platform.settings');
Route::put('platform/settings', 'Platform\SettingsController@update');
Route::get('platform/settings/two-factor', 'Platform\SettingsController@show2FAForm')->name('platform.settings.two-factor');
Route::post('platform/settings/two-factor', 'Platform\SettingsController@register2FA');
Route::delete('platform/settings/two-factor', 'Platform\SettingsController@delete2FA');

Route::get('platform/admin', 'Platform\Admin\AdminController@admin')->name('platform.admin');
Route::resource('platform/admin/domains', 'Platform\Admin\DomainController', ['as' => 'platform.admin']);
Route::resource('platform/admin/news', 'Platform\Admin\NewsController', ['as' => 'platform.admin']);

Route::get('platform/support', 'Platform\InfoController@support')->name('platform.support');

Route::post('system/mailgun', 'System\MailgunController@event')->name('system.mailgun');
44 changes: 0 additions & 44 deletions routes/web.php
Expand Up @@ -11,48 +11,4 @@
|
*/

Route::domain(config('app.url'))->group(function () {
Route::get('/', 'Site\SiteController@index')->name('site.home');
Route::get('about', 'Site\SiteController@about')->name('site.about');
Route::get('contact', 'Site\SiteController@contact')->name('site.contact');

Route::get('terms-of-use', 'Platform\InfoController@terms')->name('platform.terms');
Route::get('privacy-policy', 'Platform\InfoController@privacy')->name('platform.privacy');

Route::get('platform/login', 'Platform\LoginController@showLoginForm')->name('platform.login');
Route::post('platform/login/vatsim', 'Platform\VatsimLoginController@login')->name('platform.login.vatsim');
Route::get('platform/login/vatsim/callback', 'Platform\VatsimLoginController@callback')->name('platform.login.vatsim.callback');
Route::get('platform/login/two-factor', 'Platform\TwoFactorAuthController@showForm')->name('platform.login.two-factor');
Route::post('platform/login/two-factor', 'Platform\TwoFactorAuthController@login');

Route::get('platform/register', 'Platform\RegistrationController@showRegistrationForm')->name('platform.register');
Route::post('platform/register', 'Platform\RegistrationController@register')->name('platform.register');
Route::get('platform/register/verify/{token}', 'Platform\EmailVerificationController@verifyEmail')->name('platform.register.verify');

Route::post('platform/logout', 'Platform\LoginController@logout')->name('platform.logout');

Route::get('platform', 'Platform\DashboardController@platform')->name('platform');
Route::get('platform/dashboard', 'Platform\DashboardController@dashboard')->name('platform.dashboard');

Route::resource('platform/urls', 'Platform\UrlController', ['as' => 'platform']);

Route::resource('platform/organizations', 'Platform\OrganizationController', ['as' => 'platform']);
Route::resource('platform/organizations.prefix', 'Platform\OrganizationPrefixController', ['as' => 'platform'])->only(['create', 'store']);
Route::resource('platform/organizations.users', 'Platform\OrganizationUsersController', ['as' => 'platform'])->only(['store', 'destroy']);

Route::get('platform/settings', 'Platform\SettingsController@edit')->name('platform.settings');
Route::put('platform/settings', 'Platform\SettingsController@update');
Route::get('platform/settings/two-factor', 'Platform\SettingsController@show2FAForm')->name('platform.settings.two-factor');
Route::post('platform/settings/two-factor', 'Platform\SettingsController@register2FA');
Route::delete('platform/settings/two-factor', 'Platform\SettingsController@delete2FA');

Route::get('platform/admin', 'Platform\Admin\AdminController@admin')->name('platform.admin');
Route::resource('platform/admin/domains', 'Platform\Admin\DomainController', ['as' => 'platform.admin']);
Route::resource('platform/admin/news', 'Platform\Admin\NewsController', ['as' => 'platform.admin']);

Route::get('platform/support', 'Platform\InfoController@support')->name('platform.support')->domain();

Route::post('system/mailgun', 'System\MailgunController@event')->name('system.mailgun');
});

Route::get('{prefix?}/{short_url?}', 'UrlController@redirect')->name('short-url');

0 comments on commit cca7800

Please sign in to comment.