otpService = $otpService; } /** * Verify Email OTP */ public function verifyEmail(EmailVerificationRequest $request) { $user = User::where('email', $request->email)->first(); if (!$user) { return $this->errorResponse('User not found', 404); } try { $this->otpService->verifyOtp($user, 'email_verification', $request->otp); $user->update(['is_verified' => true]); $token = $user->createToken('auth_token')->plainTextToken; return $this->successResponse('Email verified successfully', [ 'token' => $token, 'user' => $user ]); } catch (\Exception $e) { return $this->errorResponse($e->getMessage(), 400); } } /** * Verify Password Reset OTP and reset password */ public function verifyResetPassword(ResetPasswordRequest $request) { $user = User::where('email', $request->email)->first(); if (!$user) { return $this->errorResponse('User not found', 404); } try { $this->otpService->resetPasswordWithOtp($user, $request->otp, $request->password); return $this->successResponse('Password reset successfully'); } catch (\Exception $e) { return $this->errorResponse($e->getMessage(), 400); } } }