Bill Meet streaming hourly and storage per GB like Transfer.
Deploy Ladill Meet / deploy (push) Successful in 54s

Wallet debits at session end, on recording/file storage, and via daily renewals with grace period before asset deletion.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-01 16:33:45 +00:00
co-authored by Cursor
parent 13a251250c
commit 59b59cb70e
18 changed files with 749 additions and 96 deletions
@@ -27,9 +27,11 @@ class AdminController extends Controller
$branchId = app(OrganizationResolver::class)->branchScope($this->member($request));
$summary = $this->metering->usageSummary($organization, $branchId);
$costs = $this->metering->estimatedCostGhs($summary);
$quotas = $this->licenses->quotas($organization);
$tier = $organization->license_tier ?? 'standard';
$billing = app(\App\Services\Meet\MeetBillingService::class);
return view('meet.admin.usage', compact('organization', 'summary', 'quotas', 'tier'));
return view('meet.admin.usage', compact('organization', 'summary', 'costs', 'quotas', 'tier', 'billing'));
}
}
@@ -49,6 +49,7 @@ class RecordingController extends Controller
$this->authorizeAbility($request, 'meetings.view');
$this->authorizeOwner($request, $recording);
abort_unless($recording->isReady() && $recording->storage_path, 404);
abort_unless(app(\App\Services\Meet\MeetBillingService::class)->storageIsAccessible($recording), 402, 'Recording storage billing is overdue. Top up your Ladill wallet to download this recording.');
return Storage::disk(config('meet.recordings.disk', 'local'))
->download($recording->storage_path, $recording->session->room->title.'.mp4');