laravel-learn-bbs/app/Http/Controllers/Api/VerificationCodesController.php

42 lines
1.4 KiB
PHP
Raw Normal View History

2018-06-03 08:11:51 +00:00
<?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);
}
}