shell bypass 403
<?php
namespace Rennokki\QueryCache;
use Exception;
use Illuminate\Database\Eloquent\Model;
class FlushQueryCacheObserver
{
/**
* Handle the Model "created" event.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function created(Model $model)
{
$this->invalidateCache($model);
}
/**
* Handle the Model "updated" event.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function updated(Model $model)
{
$this->invalidateCache($model);
}
/**
* Handle the Model "deleted" event.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function deleted(Model $model)
{
$this->invalidateCache($model);
}
/**
* Handle the Model "forceDeleted" event.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function forceDeleted(Model $model)
{
$this->invalidateCache($model);
}
/**
* Handle the Model "restored" event.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function restored(Model $model)
{
$this->invalidateCache($model);
}
/**
* Invalidate the cache for a model.
*
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
* @throws Exception
*/
protected function invalidateCache(Model $model): void
{
$class = get_class($model);
if (! $model->getCacheTagsToInvalidateOnUpdate()) {
throw new Exception('Automatic invalidation for '.$class.' works only if at least one tag to be invalidated is specified.');
}
$class::flushQueryCache(
$model->getCacheTagsToInvalidateOnUpdate()
);
}
}