19 lines
2.0 KiB
PHP
19 lines
2.0 KiB
PHP
<?php
|
|
namespace App\Http\Controllers\Nas;
|
|
use App\Http\Controllers\ApiController;
|
|
use App\Models\NasScriptPolicy;
|
|
use App\Services\Nas\ScriptPolicyService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class ScriptPolicyController extends ApiController
|
|
{
|
|
public function __construct(protected ScriptPolicyService $service) {}
|
|
public function index(Request $request) { $this->authorizePlatform($request); $data=$request->validate(['search'=>['nullable','string','max:255'],'per_page'=>['nullable','integer','between:1,100']]); return $this->success($this->service->list($data),'Script Policy berhasil diambil'); }
|
|
public function store(Request $request) { $this->authorizePlatform($request); return $this->created($this->service->save($this->validated($request),$request->user()->id),'Script Policy berhasil dibuat'); }
|
|
public function update(Request $request, NasScriptPolicy $policy) { $this->authorizePlatform($request); return $this->updated($this->service->save($this->validated($request,$policy),$request->user()->id,$policy),'Versi Script Policy berhasil dibuat'); }
|
|
public function show(Request $request, NasScriptPolicy $policy) { $this->authorizePlatform($request); return $this->success($policy->load(['latestVersion','versions'=>fn($q)=>$q->latest('version')]),'Detail Script Policy berhasil diambil'); }
|
|
private function validated(Request $request, ?NasScriptPolicy $policy=null): array { return $request->validate(['code'=>['required','alpha_dash','max:100',Rule::unique('nas_script_policies','code')->ignore($policy)],'name'=>['required','string','max:255'],'service_type'=>['required',Rule::in(['ppp','hotspot'])],'event'=>['required',Rule::in(['on_up','on_down','on_login','on_logout'])],'script_template'=>['required','string','max:65535'],'change_notes'=>['nullable','string','max:1000'],'enabled'=>['nullable','boolean']]); }
|
|
private function authorizePlatform(Request $request): void { abort_unless($request->user()->isMasterAdmin() || $request->user()->is_platform_staff,403,'Script Policy hanya dapat dikelola staff platform.'); }
|
|
}
|