File: /var/www/html/app/Livewire/Auth/VerifyEmail.php
<?php
namespace App\Livewire\Auth;
use Livewire\Component;
use App\Services\ApiEndpoints;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;
class VerifyEmail extends Component
{
public $email_code1;
public $email_code2;
public $email_code3;
public $email_code4;
public $email_code5;
public $email_code6;
public $email_code;
public $email;
protected $rules = [
"email_code" => "required|digits:6|exists:otp_verifications,otp",
];
public function mount()
{
Session::forget('error');
$this->email = session('user_email');
}
public function resendOtp()
{
try {
$email = session('user_email');
$response = Http::post(ApiEndpoints::sendEmailOtp(), [
'email' => $email,
]);
if ($response->successful()) {
$info = $response->json(['message']);
Session::flash('success', $info);
Session::forget('error');
return redirect()->to('/verify-email');
} else {
$info = $response->json(['message']);
$this->addError('email_code', $info);
Session::flash('error', $info);
}
} catch (\Throwable $th) {
$info = $th->getMessage();
Session::flash('error', $info);
Log::error($th->getMessage());
$this->addError('email', $info);
}
}
public function verifyEmail()
{
try {
$this->email = session('user_email');
$this->email_code = $this->email_code1 . $this->email_code2 . $this->email_code3 . $this->email_code4 . $this->email_code5 . $this->email_code6;
$this->validate([
"email" => "required|exists:otp_verifications,email",
"email_code" => "required|digits:6|exists:otp_verifications,otp",
], [
'email.required' => 'The email field is required.',
'email.exists' => 'The email is not correct.',
'email_code.required' => 'The otp field is required.',
'email_code.exists' => 'The otp is not correct.',
'email_code.digits' => 'The otp must be 6 digits.',
]);
$response = Http::post(ApiEndpoints::verifyEmailOtp(), [
'email' => $this->email,
'otp' => $this->email_code,
]);
if ($response->successful()) {
$info = $response->json(['message']);
Session::flash('success', $info);
return redirect()->to('/download-app');
} else {
$info = $response->json();
$this->addError('email_code', $info);
Session::flash('error', $info);
return redirect()->to('/verify-email');
}
} catch (\Throwable $th) {
$info = $th->getMessage();
Log::error($th->getMessage());
$this->addError('email_code', $info);
}
}
public function render()
{
return view('livewire.auth.verify-email');
}
}