<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use Illuminate\Validation\Rule; use App\Models\{Domain,Echoarea}; class DomainRequest extends FormRequest { public function authorize(Domain $o) { return Gate::allows('admin',$o); } public function rules(Request $request) { if (! $request->isMethod('post')) return []; $o = $this->route('o'); return [ 'name' => [ 'required', 'max:8', 'regex:/^[a-z-_~]{1,8}$/', Rule::unique('domains') ->where(fn($query)=>$query ->where('name',$request->post('name')) ->when($o?->exists,fn($query)=>$query->where('id','<>',$o->id)) ) ], 'dnsdomain' => [ 'nullable', 'regex:/^(?!:\/\/)(?=.{1,255}$)((.{1,63}\.){1,127}(?![0-9]*$)[a-z0-9-]+\.?)$/i', Rule::unique('domains') ->where(fn($query)=>$query ->where('dnsdomain',$request->post('dnsdomain')) ->when($o?->exists,fn($query)=>$query->where('id','<>',$o->id)) ) ], 'active' => 'required|boolean', 'public' => 'required|boolean', 'accept_app' => 'required|boolean', 'flatten' => 'nullable|boolean', 'nodestatus_id' => [ 'nullable', Rule::exists(Echoarea::class,'id'), Rule::in($o?->echoareas->pluck('id')), ] ]; } }