Skip to main content

Overview

Tutors must pass identity verification before their profile becomes visible. The platform uses two providers:

Verification types

Tutors go through up to three verification processes:

1. Identity verification (required)

Model: app/Models/v1/VerificationAccount.php
States: When status changes, TutorIDVerificationStatusUpdated email is sent to internal team with status-specific messaging.

2. DBS check (required)

Model: app/Models/v1/VerificationDBS.php DBS (Disclosure and Barring Service) is a UK criminal background check.
DBS documents are uploaded as images and stored in S3. Access to DBS document URLs requires auth:api middleware.

3. Qualification verification (required)

Model: app/Models/v1/VerificationQualification.php

Configuration

Onfido

Yoti

Webhook

Endpoint: POST /api/v1/verification/status (public, no auth) Receives status updates from Onfido when verification completes. Updates the verification_accounts record.

Verification gateways

Model: app/Models/v1/VerificationGateway.php
Seeded by InitialVerificationGatewayTableSeeder.

How verification affects visibility

The User model checks verification status at multiple points:
A tutor needs all of these to be true for isVerified() to return true — which is required for search visibility.
The CheckVerificationStatusOfPendingApplicants job exists in app/Jobs/ but is completely disabled (all code commented out). Status updates come via webhooks instead.

Resource access

Verification documents are served via S3 signed URLs with different expiry times: