| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace App\Http\Controllers;
- use App\Http\Resources\IdentityVerificationResource;
- use App\Services\IdentityVerificationService;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Throwable;
- class VerificationController extends Controller
- {
- public function __construct(
- private readonly IdentityVerificationService $service,
- ) {}
- public function createSession(Request $request): JsonResponse
- {
- try {
- return $this->successResponse(
- payload: $this->service->startFor($request->user(), $request->boolean('native')),
- message: __('identity_verification.session_created'),
- code: 201,
- );
- } catch (Throwable $e) {
- return $this->errorResponse(message: $e->getMessage(), code: 422);
- }
- }
- public function callback(Request $request)
- {
- $schemes = [
- 'client' => 'br.com.diarista.client',
- 'provider' => 'br.com.diarista.provider',
- ];
- return response()
- ->view('verification.callback', [
- 'status' => $request->query('status'),
- 'scheme' => $schemes[$request->query('app')] ?? null,
- ])
- ->header('Cache-Control', 'no-store');
- }
- public function me(Request $request): JsonResponse
- {
- return $this->successResponse(payload: $this->service->statusFor($request->user()));
- }
- public function pending(Request $request): JsonResponse
- {
- return $this->successResponse(
- payload: $this->service->pending(
- perPage: (int) $request->integer('per_page', 10),
- page: (int) $request->integer('page', 1),
- ),
- );
- }
- public function show(int $id): JsonResponse
- {
- $verification = $this->service->findWithFreshDecision($id);
- if (! $verification) {
- return $this->errorResponse(message: __('identity_verification.not_found'), code: 404);
- }
- return $this->successResponse(payload: $verification);
- }
- public function approve(Request $request, int $id): JsonResponse
- {
- return $this->review($request, $id, approved: true);
- }
- public function reject(Request $request, int $id): JsonResponse
- {
- return $this->review($request, $id, approved: false);
- }
- //
- private function review(Request $request, int $id, bool $approved): JsonResponse
- {
- try {
- $verification = $this->service->review(
- id: $id,
- approved: $approved,
- reviewer: $request->user(),
- comment: $request->string('comment')->toString() ?: null,
- );
- return $this->successResponse(
- payload: new IdentityVerificationResource($verification),
- message: __('identity_verification.reviewed'),
- );
- } catch (Throwable $e) {
- return $this->errorResponse(message: $e->getMessage(), code: 422);
- }
- }
- }
|