107 lines
2.5 KiB
PHP
107 lines
2.5 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
|
||
namespace App\Http\Controllers;
|
||
|
||
use Fastknife\Exception\ParamException;
|
||
use Fastknife\Service\BlockPuzzleCaptchaService;
|
||
use Fastknife\Service\ClickWordCaptchaService;
|
||
use Fastknife\Service\Service;
|
||
use Illuminate\Support\Facades\Request;
|
||
|
||
class IndexController
|
||
{
|
||
public function index()
|
||
{
|
||
try {
|
||
$service = $this->getCaptchaService();
|
||
$data = $service->get();
|
||
} catch (\Exception $e) {
|
||
return $this->error($e->getMessage());
|
||
}
|
||
return $this->success($data);
|
||
}
|
||
|
||
/**
|
||
* 一次验证
|
||
* @return array
|
||
*/
|
||
public function check()
|
||
{
|
||
try {
|
||
$data = $this->validate();
|
||
$service = $this->getCaptchaService();
|
||
$service->check($data['token'], $data['pointJson']);
|
||
} catch (\Exception $e) {
|
||
return $this->error($e->getMessage());
|
||
}
|
||
return $this->success([]);
|
||
}
|
||
|
||
/**
|
||
* 二次验证
|
||
* @return array
|
||
*/
|
||
public function verification()
|
||
{
|
||
try {
|
||
$data = $this->validate();
|
||
$service = $this->getCaptchaService();
|
||
$service->verification($data['token'], $data['pointJson']);
|
||
} catch (\Exception $e) {
|
||
return $this->error($e->getMessage());
|
||
}
|
||
return $this->success([]);
|
||
}
|
||
|
||
protected function getCaptchaService()
|
||
{
|
||
$captchaType = request()->post('captchaType', null);
|
||
$config = config('captcha');
|
||
switch ($captchaType) {
|
||
case "clickWord":
|
||
$service = new ClickWordCaptchaService($config);
|
||
break;
|
||
case "blockPuzzle":
|
||
$service = new BlockPuzzleCaptchaService($config);
|
||
break;
|
||
default:
|
||
throw new ParamException('captchaType参数不正确!');
|
||
}
|
||
return $service;
|
||
}
|
||
|
||
protected function validate()
|
||
{
|
||
return Request::instance()->validate([
|
||
'token' => 'bail|required',
|
||
'pointJson' => 'required',
|
||
]);
|
||
|
||
}
|
||
|
||
protected function success($data)
|
||
{
|
||
return [
|
||
'error' => false,
|
||
'repCode' => '0000',
|
||
'repData' => $data,
|
||
'repMsg' => null,
|
||
'success' => true,
|
||
];
|
||
}
|
||
|
||
|
||
protected function error($msg)
|
||
{
|
||
return [
|
||
'error' => true,
|
||
'repCode' => '6111',
|
||
'repData' => null,
|
||
'repMsg' => $msg,
|
||
'success' => false,
|
||
];
|
||
}
|
||
|
||
}
|