Skip to content

SMS Framework provides a system for determining whether a phone number has been verified.

Verification typically happens by sending a message containing a code to a phone number. The recipient of the message then has a fixed amount of time to claim the code by entering the code into a form.

Verification Configuration

Verification can be configured by the sms.verification service parameter.

yaml
  sms.verification:
    # Disabling verification will remove associated services.
    enabled: true
    route:
      path: '/verify'
      success: '/user'
    # Whether to enforce unique phone numbers. If a newly verified phone number
    # also exists on another account, the phone number verification will be
    # deleted. If unverified.purge_fields is true, field data will be purged.
    unique: true
    unverified:
      lifetime: 900
      # Phone number data may not necessarily come from fields, but fields will be checked for this data.
      purge_fields: true
    message: |-
      Your verification code is '[sms-message:verification-code]'.
      Go to [sms:verification-url] to verify your phone number.
      - [site:name]

Keys

  • enabled: Verification is activated when set to true. When this is false, the verification service (\Drupal\sms\PhoneNumberVerification\SmsPhoneNumberVerificationInterface) and routes are no longer available.
  • route.path: mapping for the verification route.
  • route.success: the path to send the user after successful verification.
  • unique: when true, allows only one verification per phone number. This will delete verifications for a phone number when a new one is created.
  • unverified.lifetime: How long in seconds a verification can be unverified for, before it can no longer be claimed, and the verification is marked for deletion.
  • unverified.purge_fields: Whether phone number field data should be removed, and entity resaved, if a verification expires.
  • message — the contents of the SMS verification message. Tokens include [sms-message:verification-code] and [sms:verification-url] for the verification code and verification URL respectively.

Verification SMS

When phone number field mapping is used with the verification flag, a verification SMS message will automatically be sent to a phone when the phone number is saved to an entity.

Verification Field Widget

The SMS Framework Phone Verification field widget may be used with a telephone field to show verification status of the value associated with the widget. The widget can also lock modifications to the value if a verification message was dispatch recently.

SMS Framework Phone Verification Widget

Verification form

When a verification code is received, it may be entered into the verify form to complete verification.

A code must be entered before it expires.

Verification form

Programmatic use

You can also use verification services manually, instead of relying on hooks to send verification messages, cron to clean up messages, and the verification form to verify messages:

Create verification and send a verification message

SmsPhoneNumberVerificationInterface::newPhoneVerification can be used to create a verification record with random code and send a verification SMS.

Determine if a entity/object and phone number combination is verified

SmsPhoneNumberVerificationInterface::isVerified

Determine if a verification exists which has not been claimed

SmsPhoneNumberVerificationInterface::claimableVerificationByCodeExists

Verifies a phone number for an entity/object

SmsPhoneNumberVerificationInterface::verify

An exception (\Drupal\sms\PhoneNumberVerification\Exception\NoPhoneNumberVerificationExists) is thrown if a verification does not exist with the provided context.

Verifies a phone number by code

SmsPhoneNumberVerificationInterface::verifyByCode

Completes verification process of any verification with the provided code.

An exception (\Drupal\sms\PhoneNumberVerification\Exception\NoPhoneNumberVerificationExists) is thrown if a verification does not exist with the provided context.

Delete any verifications for a entity/object

SmsPhoneNumberVerificationInterface::deletePhoneVerifications