mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 14:14:04 +00:00
[1.8.0] Tenant redirect (#103)
This commit is contained in:
parent
6cee5d36ad
commit
b12b9c3a54
3 changed files with 40 additions and 1 deletions
|
|
@ -17,7 +17,7 @@
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"vlucas/phpdotenv": "^3.3",
|
"vlucas/phpdotenv": "^3.3",
|
||||||
"laravel/framework": "5.8.*",
|
"laravel/framework": "5.8.*",
|
||||||
"orchestra/testbench": "~3.8",
|
"orchestra/testbench-browser-kit": "~3.8",
|
||||||
"league/flysystem-aws-s3-v3": "~1.0",
|
"league/flysystem-aws-s3-v3": "~1.0",
|
||||||
"phpunit/phpcov": "^6.0"
|
"phpunit/phpcov": "^6.0"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ use Stancl\Tenancy\Commands\Seed;
|
||||||
use Illuminate\Cache\CacheManager;
|
use Illuminate\Cache\CacheManager;
|
||||||
use Stancl\Tenancy\Commands\Install;
|
use Stancl\Tenancy\Commands\Install;
|
||||||
use Stancl\Tenancy\Commands\Migrate;
|
use Stancl\Tenancy\Commands\Migrate;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Stancl\Tenancy\Commands\Rollback;
|
use Stancl\Tenancy\Commands\Rollback;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
@ -47,6 +48,21 @@ class TenancyServiceProvider extends ServiceProvider
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->app->register(TenantRouteServiceProvider::class);
|
$this->app->register(TenantRouteServiceProvider::class);
|
||||||
|
|
||||||
|
$this->registerTenantRedirectMacro();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function registerTenantRedirectMacro()
|
||||||
|
{
|
||||||
|
RedirectResponse::macro('tenant', function (string $domain) {
|
||||||
|
// replace first occurance of hostname fragment with $domain
|
||||||
|
$url = $this->getTargetUrl();
|
||||||
|
$hostname = \parse_url($url, PHP_URL_HOST);
|
||||||
|
$position = \strpos($url, $hostname);
|
||||||
|
$this->setTargetUrl(\substr_replace($url, $domain, $position, \strlen($hostname)));
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
23
tests/TenantRedirectMacroTest.php
Normal file
23
tests/TenantRedirectMacroTest.php
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Stancl\Tenancy\Tests;
|
||||||
|
|
||||||
|
use Route;
|
||||||
|
|
||||||
|
class TenantRedirectMacroTest extends TestCase
|
||||||
|
{
|
||||||
|
/** @test */
|
||||||
|
public function tenant_redirect_macro_replaces_only_the_hostname()
|
||||||
|
{
|
||||||
|
Route::get('/foobar', function () {
|
||||||
|
return 'Foo';
|
||||||
|
})->name('home');
|
||||||
|
|
||||||
|
Route::get('/redirect', function () {
|
||||||
|
return redirect()->route('home')->tenant('abcd');
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->get('/redirect')
|
||||||
|
->assertRedirect('http://abcd/foobar');
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue