6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/SmsCodeController.php

57 lines
1.4 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers;
use App\Exceptions\BizException;
use App\Models\SmsCode;
use App\Rules\PhoneNumber;
use App\Services\SmsCodeService;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Http\Request;
use Throwable;
class SmsCodeController extends Controller
{
/**
* 发送短信验证码
*
* @param \Illuminate\Http\Request $request
* @param \App\Services\SmsCodeService $smsCodeService
* @return \Illuminate\Http\Response
*
* @throws \App\Exceptions\BizException
*/
public function store(
Request $request,
SmsCodeService $smsCodeService,
) {
$type = (int) $request->input('type');
if (in_array($type, [SmsCode::TYPE_SET_WALLET_PASSWORD])) {
if (is_null($user = $request->user())) {
throw new AuthenticationException('请先登录', ['api']);
}
$phone = $user->phone;
} else {
$request->validate([
'phone' => ['bail', 'required', new PhoneNumber()],
]);
$phone = $request->input('phone');
}
$code = app()->isProduction() ? mt_rand(100000, 999999) : '666666';
try {
$smsCodeService->send($phone, $type, $code);
} catch (BizException $e) {
throw $e;
} catch (Throwable $e) {
report($e);
}
return response()->noContent();
}
}