Exemple #1
0
/**
 * Hook for user creation form submissions.
 * @param User $u
 * @param string $message
 * @return bool true to continue, false to abort user creation
 */
function asAbortNewAccountHook($user, &$message)
{
    global $wgAntiSpoofAccounts, $wgUser, $wgRequest;
    wfLoadExtensionMessages('AntiSpoof');
    if (!$wgAntiSpoofAccounts) {
        $mode = 'LOGGING ';
        $active = false;
    } elseif ($wgRequest->getCheck('wpIgnoreAntiSpoof') && $wgUser->isAllowed('override-antispoof')) {
        $mode = 'OVERRIDE ';
        $active = false;
    } else {
        $mode = '';
        $active = true;
    }
    $name = $user->getName();
    $spoof = new SpoofUser($name);
    if ($spoof->isLegal()) {
        $normalized = $spoof->getNormalized();
        $conflict = $spoof->getConflict();
        if ($conflict === false) {
            wfDebugLog('antispoof', "{$mode}PASS new account '{$name}' [{$normalized}]");
        } else {
            wfDebugLog('antispoof', "{$mode}CONFLICT new account '{$name}' [{$normalized}] spoofs '{$conflict}'");
            if ($active) {
                $message = wfMsg('antispoof-name-conflict', $name, $conflict);
                return false;
            }
        }
    } else {
        $error = $spoof->getError();
        wfDebugLog('antispoof', "{$mode}ILLEGAL new account '{$name}' {$error}");
        if ($active) {
            $message = wfMsg('antispoof-name-illegal', $name, $error);
            return false;
        }
    }
    return true;
}