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); } } }