From c01f566ba99338349ec957412ef4a645f38d8ca2 Mon Sep 17 00:00:00 2001 From: Julien Nahum Date: Wed, 10 Jan 2024 11:32:22 +0100 Subject: [PATCH] Unify domain validation regex to fix custom domain issues --- app/Http/Controllers/CaddyController.php | 3 ++- app/Http/Middleware/CustomDomainRestriction.php | 3 ++- app/Http/Requests/UserFormRequest.php | 3 ++- app/Http/Requests/Workspace/CustomDomainRequest.php | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/CaddyController.php b/app/Http/Controllers/CaddyController.php index 245a56b..b7bd35f 100644 --- a/app/Http/Controllers/CaddyController.php +++ b/app/Http/Controllers/CaddyController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Requests\Workspace\CustomDomainRequest; use App\Models\Workspace; use Illuminate\Http\Request; @@ -14,7 +15,7 @@ class CaddyController extends Controller ]); // make sure domain is valid $domain = $request->input('domain'); - if (!preg_match('/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}$/', $domain)) { + if (!preg_match(CustomDomainRequest::CUSTOM_DOMAINS_REGEX, $domain)) { return $this->error([ 'success' => false, 'message' => 'Invalid domain', diff --git a/app/Http/Middleware/CustomDomainRestriction.php b/app/Http/Middleware/CustomDomainRestriction.php index 0b970b7..9553f27 100644 --- a/app/Http/Middleware/CustomDomainRestriction.php +++ b/app/Http/Middleware/CustomDomainRestriction.php @@ -2,6 +2,7 @@ namespace App\Http\Middleware; +use App\Http\Requests\Workspace\CustomDomainRequest; use App\Models\Forms\Form; use App\Models\Workspace; use Closure; @@ -22,7 +23,7 @@ class CustomDomainRestriction } $customDomain = $request->header(self::CUSTOM_DOMAIN_HEADER); - if (!preg_match('/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}$/', $customDomain)) { + if (!preg_match(CustomDomainRequest::CUSTOM_DOMAINS_REGEX, $customDomain)) { return response()->json([ 'success' => false, 'message' => 'Invalid domain', diff --git a/app/Http/Requests/UserFormRequest.php b/app/Http/Requests/UserFormRequest.php index d766305..bb38ec1 100644 --- a/app/Http/Requests/UserFormRequest.php +++ b/app/Http/Requests/UserFormRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests; +use App\Http\Requests\Workspace\CustomDomainRequest; use App\Models\Forms\Form; use App\Rules\OneEmailPerLine; use Illuminate\Validation\Rule; @@ -126,7 +127,7 @@ abstract class UserFormRequest extends \Illuminate\Foundation\Http\FormRequest // Custom SEO 'seo_meta' => 'nullable|array', - 'custom_domain' => 'sometimes|nullable|regex:/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,20}$/' + 'custom_domain' => 'sometimes|nullable|regex:'. CustomDomainRequest::CUSTOM_DOMAINS_REGEX, ]; } diff --git a/app/Http/Requests/Workspace/CustomDomainRequest.php b/app/Http/Requests/Workspace/CustomDomainRequest.php index dd4640e..87c0383 100644 --- a/app/Http/Requests/Workspace/CustomDomainRequest.php +++ b/app/Http/Requests/Workspace/CustomDomainRequest.php @@ -8,6 +8,7 @@ use Illuminate\Http\Request; class CustomDomainRequest extends FormRequest { + const CUSTOM_DOMAINS_REGEX = '/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,20}$/'; public Workspace $workspace; public array $customDomains = []; @@ -32,7 +33,7 @@ class CustomDomainRequest extends FormRequest $domains = collect($value)->filter(function ($domain) { return !empty( trim($domain) ); })->each(function($domain) use (&$errors) { - if (!preg_match('/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,20}$/', $domain)) { + if (!preg_match(self::CUSTOM_DOMAINS_REGEX, $domain)) { $errors[] = 'Invalid domain: ' . $domain; } });