Авторизация по коду из Email письма

Классы и методы

Иногда возникают случаи для использования функционала модуля в своих нестандартных случаях, для этого здесь приведено описание классов базовых и примеры использования. Все доступные методы можно посмотреть в исходниках модуля.

Основные классы для работы с модулем

Базовый класс для работ с модулем, через который происходит все взаимодействие

\Bxmaker\AuthUserEmail\Manager

Класс для работы с ограничениями для конкретных email адресов, отслеживание попыток, таймаутов, необходимости показа captcha

\Bxmaker\AuthUserEmail\Limit

Класс для работы с ограничениями для конкретных IP адресов, отслеживание попыток отправки кодов, блокировка отправки кодов, необходимость показа captcha и тп

\Bxmaker\AuthUserEmail\Ip\Limit

Базовый класс для исключений в процессе работы модуля

\Bxmaker\AuthUserEmail\Exception\BaseException

Подклчюение

Базовая подключение модуля для взаимодействия с ним

if(\Bitrix\Main\Loader::includeModule('bxmaker.authuseremail'))
{
    $oManager = \Bxmaker\AuthUserEmail\Manager::getInstance();

}

Отправка код на Email

Отправка кода на указанный емэйл, код если не задан будет сгенерирован

$oManager->sendCode($email, $code = null, $bRegister = false);

$code - если не задано, то код будет сгенерирован автоматически

bRegister - влаг что отправляется код при регистрации, в этом случае используется другой тип почтового шаблона, который не передается ссылка для автовхода

Генерация кода

Код можно отправить на email произвольный, а можно сгенерировать согласно настройкам модуля

$code = $oManager->generateCode();

Проверка кода

Код можно проверить следующим образом

if($oManager->isValidCode($email, $code))
{
    echo 'ok';
}

Таймауты по email

Ограничения для конкретного email адреса, приведена лишь часть доступных методов, больше в исходниках смотрите.

Важно: Прежде чем проверять что либо нужно передать email, для которого выполняются проверки


// передаем email
$oManager->limit()->setEmail($email);

//проверит вышло ли время между отправками, если нет, выбросит соответствующее исключение
$oManager->limit()->checkTimeout();


//оставшееся время ожидания
$waitTimeout = $oManager->limit()->getTimeout();

// нужно ли ожидать перед отправкой
if($oManager->limit()->isNeedWaitTimeout())
{
    echo 'ok';
}


//нужно ли запрашивать кода  картинки перед отправкой кода
 $oManager->limit()->isNeedCaptchaBeforeSendCode();


//нужно ли запрашивать кода  картинки перед проверкой кода
 $oManager->limit()->isNeedCaptchaBeforeCheckCode();

//увеличение счетчика попыток отправки кода
 $oManager->limit()->increaseSendAttempt();

//увеличение счетчика попыток проверки кода
 $oManager->limit()->increaseCheckAttempt();


// сброс всех ограничений
$oManager->limit()->clearAttempts();


Таймауты по IP

Все проверки и ограничения для текущего IP, приведена лишь часть доступных методов, больше в исходниках смотрите


//проверка ограничений, в случае наличия выбросит соответствующее исключение
$oManager->ipLimit()->check();


//нужно ли запрашивать код с картинки (captcha) перед отправкой кода
if($oManager->ipLimit()->isNeedCaptcha())
{
    echo 'ok';
}

//заблокирована ли возможность запроса кода 
if($oManager->ipLimit()->isNeedBlock())
{
    echo 'ok';
}


//увеличение счетчика попыток отправки кода 
$oManager->ipLimit()->increaseAttempt();


//сброс всех счетчиков и ограничений
$oManager->ipLimit()->clearAttempts();


Получение настроек модуля

Все возможны параметры можно получить используя соответсвующий метод, который вернет значение для текущего сайта.

Если нужно получить значение для другого сайта, не текущего используйте базовый метод getParam($name, $default_value = null, $siteId = null) в который передаются параметры

$name - код параметра, например - DEFAULT_COMPONENT $default_value - значение по умолчанию, если не задано значение в настройках модуля $siteId - идентификатор сайта, например s1, по умолчанию текущий

Приведены лишь некоторые методы, оcтальные смотрите в исходниках


//комопнент модуля подклчюаемый по умолчанию вместо стандартных
$oManager->param()->getDefaultComponent();

//длина генерируемого временного кода
$oManager->param()->getCodeLength();

//время жизни временного кода в секундах
$oManager->param()->getCodeLifeTime();