1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 20:34:03 +00:00

merge 1.x

This commit is contained in:
Samuel Štancl 2019-08-19 19:02:21 +02:00
commit 4d64542ce1
6 changed files with 84 additions and 11 deletions

View file

@ -8,6 +8,7 @@ use Stancl\Tenancy\Commands\Seed;
use Illuminate\Cache\CacheManager;
use Stancl\Tenancy\Commands\Install;
use Stancl\Tenancy\Commands\Migrate;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Route;
use Stancl\Tenancy\Commands\Rollback;
use Illuminate\Support\ServiceProvider;
@ -52,6 +53,8 @@ class TenancyServiceProvider extends ServiceProvider
if (\class_exists(Telescope::class)) {
$this->setTelescopeTags();
}
$this->registerTenantRedirectMacro();
}
public function setTelescopeTags()
@ -75,6 +78,19 @@ class TenancyServiceProvider extends ServiceProvider
});
}
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;
});
}
/**
* Register services.
*

View file

@ -30,7 +30,7 @@ class Tenant extends Model
public function getConnectionName()
{
return config('tenancy.storage.db.connection') ?: config('database.default');
return config('tenancy.storage.db.connection');
}
public static function getAllTenants(array $uuids)

View file

@ -273,16 +273,23 @@ final class TenantManager
{
$uuid = $uuid ?: $this->tenant['uuid'];
// todo make this cache work with arrays
if (\array_key_exists('uuid', $this->tenant) && $uuid === $this->tenant['uuid'] &&
! \is_array($key) && \array_key_exists($key, $this->tenant)) {
return $this->tenant[$key];
}
if (\is_array($key)) {
return $this->jsonDecodeArrayValues($this->storage->getMany($uuid, $key));
$data = $this->storage->getMany($uuid, $key);
$data = $this->useJson() ? $this->jsonDecodeArrayValues($data) : $data;
return $data;
}
return \json_decode($this->storage->get($uuid, $key), true);
$data = $this->storage->get($uuid, $key);
$data = $this->useJson() ? \json_decode($data, true) : $data;
return $data;
}
/**
@ -319,7 +326,13 @@ final class TenantManager
}
if (! \is_null($value)) {
return $target[$key] = \json_decode($this->storage->put($uuid, $key, \json_encode($value)), true);
if ($this->useJson()) {
$data = \json_decode($this->storage->put($uuid, $key, \json_encode($value)), true);
} else {
$data = $this->storage->put($uuid, $key, $value);
}
return $target[$key] = $data;
}
if (! \is_array($key)) {
@ -328,10 +341,15 @@ final class TenantManager
foreach ($key as $k => $v) {
$target[$k] = $v;
$key[$k] = \json_encode($v);
$v = $this->useJson() ? \json_encode($v) : $v;
$key[$k] = $v;
}
return $this->jsonDecodeArrayValues($this->storage->putMany($uuid, $key));
$data = $this->storage->putMany($uuid, $key);
$data = $this->useJson() ? $this->jsonDecodeArrayValues($data) : $data;
return $data;
}
/**