Files
services_core/app/Http/Controllers/Nas/PackageProfileDeploymentController.php
T
2026-08-07 09:16:13 +07:00

20 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\Nas;
use App\Http\Controllers\ApiController;
use App\Models\NasPackageProfile;
use App\Models\NasPackageProfileTarget;
use App\Services\Nas\PackageProfileDeploymentService;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use App\Models\NasScriptPolicy;
class PackageProfileDeploymentController extends ApiController
{
public function __construct(protected PackageProfileDeploymentService $service) {}
public function index(Request $request, NasPackageProfile $profile) { $this->authorizeProfile($request,$profile); return $this->success($this->service->targets($profile),'Target deployment berhasil diambil'); }
public function store(Request $request, NasPackageProfile $profile) { $this->authorizeProfile($request,$profile); $data=$request->validate(['nas_mikrotik_id'=>['required','integer','exists:nas_mikrotiks,id'],'external_profile_name'=>['required','string','max:255']]); return $this->created($this->service->saveTarget($profile,$data),'Target deployment berhasil disimpan'); }
public function sync(Request $request, NasPackageProfileTarget $target) { $this->authorizeProfile($request,$target->packageProfile); $data=$request->validate(['mode'=>['required',Rule::in(['create','update','adopt'])]]); return $this->updated($this->service->sync($target,$data['mode']),'Profile berhasil disinkronkan'); }
public function scriptOptions() { return $this->success(NasScriptPolicy::where('enabled',true)->with('latestVersion:id,nas_script_policy_id,version')->orderBy('service_type')->orderBy('event')->get(['id','code','name','service_type','event','current_version']),'Pilihan Script Policy berhasil diambil'); }
private function authorizeProfile(Request $request, NasPackageProfile $profile): void { abort_unless($request->user()->isMasterAdmin() || (int)$profile->tenant_id === (int)$request->attributes->get('tenant_id'),403); }
}