* Modules, themes, and extensions * Publisher profiles and verification metadata * Installed-package tracking * Semantic version compatibility checks * PHP, Laravel, and Content Manager compatibility checks * Dependency resolution * SHA-256 checksum validation * Package signature requirements * Installation and update history * Enable and disable controls * Removal handling * Rollback records * Licence records * Marketplace administration UI * Authenticated REST endpoints * Console audit and synchronisation commands * Permissions and sidebar integration * Feature tests
17 lines
1.4 KiB
PHP
17 lines
1.4 KiB
PHP
<?php
|
|
namespace Modules\Marketplace\Http\Controllers;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\Marketplace\Models\InstalledPackage;
|
|
use Modules\Marketplace\Models\MarketplacePackage;
|
|
use Modules\Marketplace\Services\MarketplaceManager;
|
|
final class MarketplaceApiController extends Controller
|
|
{
|
|
public function packages(Request $request): JsonResponse { return response()->json(MarketplacePackage::query()->with('publisher')->where('is_active',true)->when($request->filled('type'),fn($q)=>$q->where('type',$request->string('type')))->paginate(min(100,max(1,$request->integer('per_page',25))))); }
|
|
public function installed(): JsonResponse { return response()->json(InstalledPackage::query()->with('package')->paginate(50)); }
|
|
public function install(MarketplacePackage $package,MarketplaceManager $manager,Request $request): JsonResponse { return response()->json($manager->install($package,$request->user()?->id)->load('package'),201); }
|
|
public function toggle(InstalledPackage $package,MarketplaceManager $manager,Request $request): JsonResponse { return response()->json($manager->setEnabled($package,!$package->is_enabled,$request->user()?->id)); }
|
|
public function remove(InstalledPackage $package,MarketplaceManager $manager,Request $request): JsonResponse { $manager->remove($package,$request->user()?->id); return response()->json(['status'=>'removed']); }
|
|
}
|