Flush cache on subscription changes

This commit is contained in:
Julien Nahum
2023-12-03 15:02:48 +01:00
parent 508358d020
commit 57c695e976
6 changed files with 59 additions and 9 deletions

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Models\Billing;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Laravel\Cashier\Subscription as CashierSubscription;
class Subscription extends CashierSubscription
{
use HasFactory;
public static function booted(): void
{
static::saved(function (Subscription $sub) {
$sub->user->flushCache();
});
static::deleted(function (Subscription $sub) {
$sub->user->flushCache();
});
}
}

View File

@@ -51,4 +51,18 @@ class License extends Model
3 => null,
][$this->meta['tier']];
}
public static function booted(): void
{
static::saved(function (License $license) {
if ($license->user) {
$license->user->flushCache();
}
});
static::deleted(function (License $license) {
if ($license->user) {
$license->user->flushCache();
}
});
}
}

View File

@@ -2,9 +2,7 @@
namespace App\Models;
use App\Http\Controllers\SubscriptionController;
use App\Models\Forms\Form;
use App\Models\Template;
use App\Notifications\ResetPassword;
use App\Notifications\VerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -61,7 +59,12 @@ class User extends Authenticatable implements JWTSubject
public function ownsForm(Form $form)
{
return $this->workspaces()->find($form->workspace_id) !== null;
return $this->workspaces()->whereUserId($form->workspace_id)->exists();
}
public function ownsWorkspace(Workspace $workspace)
{
return $this->workspaces()->whereUserId($workspace->id)->exists();
}
/**
@@ -203,6 +206,16 @@ class User extends Authenticatable implements JWTSubject
})->first()?->onTrial();
}
public function flushCache()
{
$this->workspaces()->with('forms')->get()->each(function (Workspace $workspace) {
$workspace->flush();
$workspace->forms->each(function (Form $form) {
$form->flush();
});
});
}
public static function boot()
{
parent::boot();