From 43b1046ae4e050822eb31a22bab114c02fbecded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Wed, 24 Nov 2021 16:29:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C=E6=97=B6,?= =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E9=AA=8C=E8=AF=81=E7=A0=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Api/V1/Auth/RegisterController.php | 31 ++++++++-------- app/Http/Requests/Api/V1/RegisterRequest.php | 36 +++++++++++++++++++ 2 files changed, 52 insertions(+), 15 deletions(-) create mode 100644 app/Http/Requests/Api/V1/RegisterRequest.php diff --git a/app/Http/Controllers/Api/V1/Auth/RegisterController.php b/app/Http/Controllers/Api/V1/Auth/RegisterController.php index 5d9f529d..be7d6a0e 100644 --- a/app/Http/Controllers/Api/V1/Auth/RegisterController.php +++ b/app/Http/Controllers/Api/V1/Auth/RegisterController.php @@ -5,11 +5,12 @@ namespace App\Http\Controllers\Api\V1\Auth; use App\Constants\Device; use App\Exceptions\BizException; use App\Http\Controllers\Api\V1\Controller; +use App\Http\Requests\Api\V1\RegisterRequest; +use App\Models\SmsCode; use App\Models\User; use App\Models\UserInfo; -use Illuminate\Http\Request; +use App\Services\SmsCodeService; use Illuminate\Support\Facades\DB; -use Illuminate\Validation\Rule; use Throwable; class RegisterController extends Controller @@ -17,25 +18,25 @@ class RegisterController extends Controller /** * 注册 * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response + * @param \App\Http\Requests\Api\V1\RegisterRequest $request + * @param \App\Services\SmsCodeService $smsCodeService + * @return \Illuminate\Http\JsonResponse */ - public function __invoke(Request $request) + public function __invoke(RegisterRequest $request, SmsCodeService $smsCodeService) { - $request->validate([ - 'phone' => ['bail', 'required', Rule::unique(User::class)], - 'password' => ['bail', 'required', 'string', 'min:6', 'max:32'], - 'verify_code' => ['bail', 'required', 'string'], - 'code' => ['bail', 'nullable', 'string'], - ]); + $input = $request->validated(); - // @todo 验证短信验证码 + $smsCodeService->validate( + $input['phone'], + SmsCode::TYPE_REGISTER, + $input['verify_code'] + ); $inviter = null; if ( - $request->filled('code') - && is_null($inviter = UserInfo::where('code', $request->input('code'))->first()) + $request->filled('code') && + is_null($inviter = UserInfo::where('code', $input['code'])->first()) ) { throw new BizException(__('Invalid invitation code')); } @@ -46,7 +47,7 @@ class RegisterController extends Controller try { DB::beginTransaction(); - $user = new User($request->only(['phone', 'password'])); + $user = new User($input); $user->phone_verified_at = $time; $user->register_ip = $ip; $user->last_login_at = $time; diff --git a/app/Http/Requests/Api/V1/RegisterRequest.php b/app/Http/Requests/Api/V1/RegisterRequest.php new file mode 100644 index 00000000..1040d117 --- /dev/null +++ b/app/Http/Requests/Api/V1/RegisterRequest.php @@ -0,0 +1,36 @@ + ['bail', 'required', new PhoneNumber(), Rule::unique(User::class)], + 'password' => ['bail', 'required', 'string', 'min:6', 'max:32'], + 'verify_code' => ['bail', 'required', 'string'], + 'code' => ['bail', 'nullable', 'string'], + ]; + } +}