42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace App\Http\Controllers\Api;
|
|||
|
|
|||
|
use App\Http\Requests\Api\VerificationCodeRequest;
|
|||
|
use Overtrue\EasySms\EasySms;
|
|||
|
|
|||
|
class VerificationCodesController extends Controller
|
|||
|
{
|
|||
|
public function store(VerificationCodeRequest $request, EasySms $easySms)
|
|||
|
{
|
|||
|
$phone = $request->get('phone');
|
|||
|
// 生成4位随机数,左侧补0
|
|||
|
|
|||
|
|
|||
|
if (!app()->environment('production')) {
|
|||
|
$code = '1234';
|
|||
|
} else {
|
|||
|
try {
|
|||
|
$code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);
|
|||
|
$result = $easySms->send($phone, [
|
|||
|
'content' => "【Lbbs社区】您的验证码是{$code}。如非本人操作,请忽略本短信"
|
|||
|
]);
|
|||
|
} catch (\GuzzleHttp\Exception\ClientException $exception) {
|
|||
|
$response = $exception->getResponse();
|
|||
|
$result = json_decode($response->getBody()->getContents(), true);
|
|||
|
return $this->response->errorInternal($result['msg'] ?? '短信发送异常');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$key = 'verificationCode_' . str_random(15);
|
|||
|
$expiredAt = now()->addMinutes(10);
|
|||
|
// 缓存验证码 10分钟过期。
|
|||
|
\Cache::put($key, ['phone' => $phone, 'code' => $code], $expiredAt);
|
|||
|
|
|||
|
return $this->response->array([
|
|||
|
'key' => $key,
|
|||
|
'expired_at' => $expiredAt->toDateTimeString(),
|
|||
|
])->setStatusCode(201);
|
|||
|
}
|
|||
|
}
|