Add captcha image generation functionality.

This commit is contained in:
2023-06-28 17:29:56 +06:00
parent 81635b4efa
commit a35b8db281
26 changed files with 1211 additions and 5 deletions

View File

@@ -0,0 +1,24 @@
<?php declare(strict_types=1);
namespace App\Http\Controllers\Api\V1;
use App\Http\Resources\Api\V1\Captcha;
use App\Services\Api\V1\CaptchaService;
use Illuminate\Http\JsonResponse;
final class CaptchaController extends Controller
{
public function __construct(
private readonly CaptchaService $captchaService
) { }
public function getCaptcha(): JsonResponse
{
$result = $this->captchaService->generate();
if (!$result->isSuccess()) {
return response()->json($result->getData())->setStatusCode($result->getCode());
}
return response()->json(new Captcha($result));
}
}

View File

@@ -1,6 +1,6 @@
<?php
<?php declare(strict_types=1);
namespace App\Http\Controllers;
namespace App\Http\Controllers\Api\V1;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;

View File

@@ -0,0 +1,31 @@
<?php declare(strict_types=1);
namespace App\Http\Resources\Api\V1;
use App\ServiceResults\Api\V1\CaptchaService\Captcha as CaptchaResult;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
final class Captcha extends JsonResource
{
/**
* @var CaptchaResult
*/
public $resource;
/**
* Transform the resource into an array.
*
* @param Request $request
* @return array
*/
public function toArray(Request $request): array
{
return [
'image_base64' => $this->resource->getImageBase64(),
'image_text_base64' => $this->resource->getImageTextBase64(),
'captcha_key' => $this->resource->getKey()
];
}
}