bianjunhui hai 2 días
pai
achega
b75e7b0404

+ 32 - 0
packages/Webkul/Shop/src/Http/Controllers/API/CustomerController.php

@@ -2,13 +2,45 @@
 
 namespace Webkul\Shop\Http\Controllers\API;
 
+use Illuminate\Http\JsonResponse;
+use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Illuminate\Support\Facades\Cookie;
 use Illuminate\Support\Facades\Event;
+use Longyi\RewardPoints\Helpers\ApiResponse;
+use Webkul\Customer\Models\Customer;
 use Webkul\Shop\Http\Requests\Customer\LoginRequest;
 
 class CustomerController extends APIController
 {
+    /**
+     * 验证邮箱是否已注册(无需登录)
+     *
+     * GET /api/customer/check-email?email=xxx@example.com
+     *
+     * @param  Request  $request
+     * @return JsonResponse
+     */
+    public function checkEmail(Request $request): JsonResponse
+    {
+        $email = trim((string) $request->input('email', ''));
+
+        if ($email === '') {
+            return ApiResponse::validationError('email is required');
+        }
+
+        if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
+            return ApiResponse::validationError('email format is invalid');
+        }
+
+        $exists = Customer::query()->where('email', $email)->exists();
+
+        return ApiResponse::success([
+            'email'    => $email,
+            'exists'   => $exists,
+        ]);
+    }
+
     /**
      * Login Customer
      *

+ 9 - 0
packages/Webkul/Shop/src/Routes/api-token.php

@@ -3,6 +3,7 @@
 use Illuminate\Support\Facades\Route;
 use Webkul\Shop\Http\Controllers\API\BearerAddressController;
 use Webkul\Shop\Http\Controllers\API\CouponController;
+use Webkul\Shop\Http\Controllers\API\CustomerController;
 use Webkul\Shop\Http\Controllers\API\HomeController;
 use Webkul\Shop\Http\Controllers\API\OrderController;
 
@@ -23,6 +24,14 @@ Route::group(['prefix' => 'api'], function () {
             Route::get('home', 'index')->name('shop.api.home.index');
         });
 
+    /** 验证邮箱是否注册(Storefront Key 认证,无需登录) */
+    Route::controller(CustomerController::class)
+        ->middleware('storefront.key')
+        ->prefix('customer')
+        ->group(function () {
+            Route::get('check-email', 'checkEmail')->name('shop.api.customer.check-email');
+        });
+
     /** 客户地址管理(Bearer Token 认证) */
     Route::controller(BearerAddressController::class)
         ->middleware('bearer.token')