From f0e7e09ef83055e75c456a6ae0508a5d9fc82f85 Mon Sep 17 00:00:00 2001 From: abdul-wahab12345 Date: Mon, 1 Jul 2024 18:52:27 +0000 Subject: [PATCH] added domain verify middleware --- app/Http/Controllers/CompanyController.php | 7 ++-- .../Controllers/Mailgun/MailgunController.php | 29 +++++++++---- app/Http/Kernel.php | 3 ++ app/Http/Middleware/VerifyDomain.php | 42 +++++++++++++++++++ error_log | 1 + routes/web.php | 4 +- 6 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 app/Http/Middleware/VerifyDomain.php diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index cdc044e..4384501 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -22,9 +22,9 @@ public function storeCompany(Request $request) if(Session::has('user_id') || Auth::id()) { - $messages = [ + $messages = [ 'company_domain.unique' => 'The domain has already been registered.', - 'company_domain.regex' => 'Please enter a valid domain format. e.g (example.com) wihtout https and /' + 'company_domain.regex' => 'Please enter a valid domain format, e.g., example.com (without https and /)' ]; $this->validate($request, [ @@ -32,11 +32,12 @@ public function storeCompany(Request $request) 'company_email' => 'required|email', 'company_domain' => [ 'required', - 'regex:/^([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+.*)$/', + 'regex:/^([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+)$/', // Updated regex 'unique:companies,domain' ], ], $messages); + $company = Company::updateOrCreate([ 'user_id' => Session::has('user_id') ? Session::get('user_id') : Auth::id(), ],[ diff --git a/app/Http/Controllers/Mailgun/MailgunController.php b/app/Http/Controllers/Mailgun/MailgunController.php index 34637a2..81e5c36 100644 --- a/app/Http/Controllers/Mailgun/MailgunController.php +++ b/app/Http/Controllers/Mailgun/MailgunController.php @@ -70,20 +70,33 @@ public function showDomain($domain){ public function verifyDomain(Request $request) { $domain = $request->input('domain'); - $response = $this->mailgunService->verifyDomain($domain); + + $result = $this->is_domain_verified($domain); - $state = $response->getDomain()->getState(); - - if($state == 'unverified'){ - return redirect()->route('showDomain',$domain); - }elseif($state == 'active'){ - //$this->createRoute($request); - + if($result){ $email = "kundesone.$domain@mailgun.kundesone.no"; $this->createEmail($domain); return redirect('/dashboard'); + }else{ + return redirect()->route('showDomain',$domain); + } + + } + + public function is_domain_verified($domain){ + + $response = $this->mailgunService->verifyDomain($domain); + + $state = $response->getDomain()->getState(); + + if($state == 'unverified'){ + return false; + }elseif($state == 'active'){ + //$this->createRoute($request); + + return true; } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 494c050..76bce3b 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -21,6 +21,7 @@ class Kernel extends HttpKernel \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + // \App\Http\Middleware\VerifyDomain::class ]; /** @@ -36,6 +37,7 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, + //\App\Http\Middleware\VerifyDomain::class, ], 'api' => [ @@ -64,5 +66,6 @@ class Kernel extends HttpKernel 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'verifyDomain' => \App\Http\Middleware\VerifyDomain::class, ]; } diff --git a/app/Http/Middleware/VerifyDomain.php b/app/Http/Middleware/VerifyDomain.php new file mode 100644 index 0000000..cc2e48d --- /dev/null +++ b/app/Http/Middleware/VerifyDomain.php @@ -0,0 +1,42 @@ +domain; + + $controller = new MailgunController(); + + $result = $controller->is_domain_verified($domain); + if($result){ + return $next($request); + }else{ + return redirect()->route('showDomain',$domain); + } + } +} diff --git a/error_log b/error_log index da01df4..9b46dc6 100644 --- a/error_log +++ b/error_log @@ -38,3 +38,4 @@ [30-Jun-2024 03:59:52 UTC] PHP Warning: Module "fileinfo" is already loaded in Unknown on line 0 [30-Jun-2024 04:00:06 UTC] PHP Warning: Module "fileinfo" is already loaded in Unknown on line 0 [30-Jun-2024 04:30:35 UTC] PHP Warning: Module "fileinfo" is already loaded in Unknown on line 0 +[01-Jul-2024 18:34:48 UTC] PHP Warning: Module "fileinfo" is already loaded in Unknown on line 0 diff --git a/routes/web.php b/routes/web.php index b39231d..e6f4b54 100644 --- a/routes/web.php +++ b/routes/web.php @@ -10,6 +10,8 @@ use App\Http\Controllers\Mailgun\MailgunController; + + /* |-------------------------------------------------------------------------- | Web Routes @@ -37,7 +39,7 @@ Route::post('/verify-domain', [MailgunController::class, 'verifyDomain'])->name('verifyDomain'); - Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('index'); + Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('index')->middleware('verifyDomain');; Route::get('/profile', [DashboardController::class, 'profile'])->name('profile'); Route::get('company-info', [CompanyController::class, 'getCompanyInfo'])->name('get.company.info'); Route::get('/waiting', [TicketController::class, 'waiting'])->name('waiting');