multi-tenant icon indicating copy to clipboard operation
multi-tenant copied to clipboard

CacheServiceeProvider tenant identification for background processes

Open juhasev opened this issue 3 years ago • 2 comments

Hyn/Tenant 5.6 the example uses $app['config']['driver'] to get the tenant UUID, however it is always null. Does anybody know how to detect the Tenant in CLI operations like background processes? I have some background processes that need to clear Cached entries.

public function boot()
{
    Cache::extend('redis_tenancy', function ($app) {
        if (PHP_SAPI === 'cli') {
            $uuid = $app['config']['driver'];
        }

        return Cache::repository(new RedisStore(
                $app['redis'],
                $uuid,
                $app['config']['cache.stores.redis.connection']
            ));
    });
} 

juhasev avatar Jul 22 '21 16:07 juhasev

I used another solution to solve this problem, which you can check in the AppServiceProvider boot() and fix by adding a cache prefix

    public function boot()
    {
        $website = \Hyn\Tenancy\Facades\TenancyFacade::website();
        if ($website) {
            Cache::setPrefix(Str::slug($website->uuid, '_') . '_cache');
        }
    }

FloneJan avatar Feb 10 '22 03:02 FloneJan

Thanks @FloneJan I have to try this out.

juhasev avatar Feb 10 '22 06:02 juhasev