Extension:EmailAuth/Hooks/EmailAuthRequireToken

EmailAuthRequireToken
Available from version ???
Decide whether verification via email is required for this login to succeed (and optionally modify the messaging)
Define function:
public static function onEmailAuthRequireToken( $user, &$verificationRequired, &$formMessage, &$subject, &$body, &$bodyHtml ) { ... }
Attach hook:
$wgHooks['EmailAuthRequireToken'][] = 'MyExtensionHooks::onEmailAuthRequireToken';
Called from:File(s): EmailAuth / includes/EmailAuthSecondaryAuthenticationProvider.php

For more information about attaching hooks, see Manual:Hooks .
For examples of other extensions using this hook, see Category:EmailAuthRequireToken extensions.

The hook will be called on every login that would be successful. When $verificationRequired is changed to true, an extra step is added to the login: a six-letter verification code is emailed to the user, and must be entered for the login to succeed.

The meaning of the parameters:

  • $user (User): The user trying to log in.
  • &$verificationRequired: (bool) Change this to true to enable verification.
  • &$formMessage: (Message) Message telling the user they need to do an extra verification step.
  • &$subject: (string) subject of the email with the verification code
  • &$body: (string) body of the email with the verification code; last parameter must be the token and will be set later
  • &bodyHtml: (string) body of the email with the verification code in HTML format.

An example that will force email verification for all admins who do not use OATH:

$wgHooks['EmailAuthRequireToken'][] = function (
        $user,
        &$verificationRequired,
        &$formMessage,
        &$subject,
        &$body,
        &$bodyHtml
) {
    if (
        class_exists( OATHAuthUtils::class ) &&
        OATHAuthUtils::isEnabledFor( $user )
    ) {
        return;
    }

    if ( $user->isAllowed( 'delete' ) ) {
        $verificationRequired = true;
        return false;
    }
};