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