20 lines
1.9 KiB
PHP
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); }
|
|
}
|