From 0b4418862d1d214a96a22fe6b60c5838bcf560a7 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Fri, 19 Jun 2026 21:37:08 +0700 Subject: [PATCH] feat: implement PhoneNumber validation rule across multiple request classes to ensure consistent phone number formatting --- .../Admin/Account/UpdateProfileRequest.php | 3 ++- app/Http/Requests/Admin/Hr/EmployeeRequest.php | 3 ++- .../Requests/Admin/Master/CustomerRequest.php | 3 ++- .../Requests/Admin/Master/SupplierRequest.php | 3 ++- .../Admin/System/Setting/SystemRequest.php | 3 ++- app/Rules/PhoneNumber.php | 16 ++++++++++++++++ 6 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 app/Rules/PhoneNumber.php diff --git a/app/Http/Requests/Admin/Account/UpdateProfileRequest.php b/app/Http/Requests/Admin/Account/UpdateProfileRequest.php index 09a6701..889cb2a 100644 --- a/app/Http/Requests/Admin/Account/UpdateProfileRequest.php +++ b/app/Http/Requests/Admin/Account/UpdateProfileRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Admin\Account; use App\Enums\Gender; +use App\Rules\PhoneNumber; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -22,7 +23,7 @@ public function rules(): array 'email' => ['required', 'email', 'max:100', Rule::unique('users', 'email')->ignore($this->user()?->id)], 'username' => ['required', 'string', 'max:20', 'alpha_dash', Rule::unique('users', 'username')->ignore($this->user()?->id)], 'full_name' => ['required', 'string', 'max:200'], - 'phone_number' => ['nullable', 'string', 'max:20', 'regex:/^08\d{8,11}$/'], + 'phone_number' => ['nullable', 'string', 'max:20', new PhoneNumber], 'gender' => ['nullable', Rule::enum(Gender::class)], 'birth_date' => ['nullable', 'date', 'before:today'], 'address' => ['nullable', 'string'], diff --git a/app/Http/Requests/Admin/Hr/EmployeeRequest.php b/app/Http/Requests/Admin/Hr/EmployeeRequest.php index 6e83490..10e1da4 100644 --- a/app/Http/Requests/Admin/Hr/EmployeeRequest.php +++ b/app/Http/Requests/Admin/Hr/EmployeeRequest.php @@ -6,6 +6,7 @@ use App\Enums\Gender; use App\Enums\Permission; use App\Enums\Role; +use App\Rules\PhoneNumber; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -31,7 +32,7 @@ public function rules(): array 'email' => ['required', 'email', 'max:100', Rule::unique('users', 'email')->ignore($this->route('user')?->id)], 'username' => ['required', 'string', 'max:20', 'alpha_dash', Rule::unique('users', 'username')->ignore($this->route('user')?->id)], 'full_name' => ['required', 'string', 'max:200'], - 'phone_number' => ['nullable', 'string', 'max:20', 'regex:/^08\d{8,11}$/'], + 'phone_number' => ['nullable', 'string', 'max:20', new PhoneNumber], 'gender' => ['nullable', Rule::enum(Gender::class)], 'birth_date' => ['nullable', 'date', 'before:today'], 'address' => ['nullable', 'string'], diff --git a/app/Http/Requests/Admin/Master/CustomerRequest.php b/app/Http/Requests/Admin/Master/CustomerRequest.php index d9df170..cf42763 100644 --- a/app/Http/Requests/Admin/Master/CustomerRequest.php +++ b/app/Http/Requests/Admin/Master/CustomerRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Admin\Master; use App\Enums\Permission; +use App\Rules\PhoneNumber; use Illuminate\Foundation\Http\FormRequest; class CustomerRequest extends FormRequest @@ -23,7 +24,7 @@ public function rules(): array { return [ 'name' => ['required', 'string', 'max:200'], - 'phone_number' => ['nullable', 'string', 'max:20'], + 'phone_number' => ['nullable', 'string', 'max:20', new PhoneNumber], 'address' => ['nullable', 'string'], ]; } diff --git a/app/Http/Requests/Admin/Master/SupplierRequest.php b/app/Http/Requests/Admin/Master/SupplierRequest.php index 11de518..9be85ef 100644 --- a/app/Http/Requests/Admin/Master/SupplierRequest.php +++ b/app/Http/Requests/Admin/Master/SupplierRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Admin\Master; use App\Enums\Permission; +use App\Rules\PhoneNumber; use Illuminate\Foundation\Http\FormRequest; class SupplierRequest extends FormRequest @@ -23,7 +24,7 @@ public function rules(): array { return [ 'name' => ['required', 'string', 'max:200'], - 'phone_number' => ['nullable', 'string', 'max:20'], + 'phone_number' => ['nullable', 'string', 'max:20', new PhoneNumber], 'address' => ['nullable', 'string'], ]; } diff --git a/app/Http/Requests/Admin/System/Setting/SystemRequest.php b/app/Http/Requests/Admin/System/Setting/SystemRequest.php index 21bd19c..7ed61f6 100644 --- a/app/Http/Requests/Admin/System/Setting/SystemRequest.php +++ b/app/Http/Requests/Admin/System/Setting/SystemRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Admin\System\Setting; use App\Enums\Permission; +use App\Rules\PhoneNumber; use Illuminate\Foundation\Http\FormRequest; class SystemRequest extends FormRequest @@ -21,7 +22,7 @@ public function rules(): array 'app_name' => ['required', 'string', 'max:100'], 'about_app' => ['required', 'string'], 'email' => ['required', 'email', 'max:100'], - 'phone' => ['required', 'string', 'max:20'], + 'phone' => ['required', 'string', 'max:20', new PhoneNumber], 'address' => ['required', 'string'], 'logo' => ['required', 'image', 'max:2048'], 'login_cover' => ['required', 'image', 'max:5120'], diff --git a/app/Rules/PhoneNumber.php b/app/Rules/PhoneNumber.php new file mode 100644 index 0000000..6f21cf6 --- /dev/null +++ b/app/Rules/PhoneNumber.php @@ -0,0 +1,16 @@ +