Jump to main content Jump to doc navigation

Событие: OnBeforeManagerLogin

Событие запускается перед началом процесса входа пользователя в контекст менеджера. По умолчанию вход разрешён. Чтобы запретить его, плагин должен установить непустой вывод события, отличный от true, — обычно сообщение об ошибке:

// запретить вход и передать причину
$modx->event->output('Вход не разрешён.');

После этого вход прерывается с этим сообщением. Если ни один плагин не установил вывод, или вывод равен true, вход продолжается. Значение, возвращённое из кода плагина, не блокирует вход — оно пишется в журнал ошибок.

  • Служба: 2 - Manager Access Events
  • Group: Security

Параметры события

Имя Описание
username Предоставленное имя пользователя.
password Предоставленный пароль.
attributes Массив:
- & rememberme - Булево множество, если пользователь хочет, чтобы пароль был запомнен. Передано по ссылке
- & lifetime - Время жизни файла cookie сеанса для этого логина. Передано по ссылке
- & loginContext - Ключ контекста, в котором происходит вход в систему. Передано по ссылке
- & addContexts - Дополнительные контексты, в которых вход в систему также происходит. Передано по ссылке

Рабочий процесс входа в систему

  1. OnBeforeWebLogin || OnBeforeManagerLogin - Внутри этого события разработчик может проверить наличие ошибочных параметров, которые будут запрещать дальнейший процесс входа в систему. Если плагин передаст через $modx->event->output() непустое значение, отличное от true, вход в систему будет прерван с указанным сообщением.
  2. OnUserNotFound - Это событие выполняется, только если указанное имя пользователя не найдено в базе данных MODX. Разработчик может предоставить свой собственный объект modUser в выходных данных события, чтобы продолжить процесс входа в систему.
  3. OnWebAuthentication || OnManagerAuthentication - Внутри этого события разработчик может проверить параметры, которые отменят проверку по умолчанию паролем и позволят продолжить вход в систему. Если один из плагинов, выполненных из этого события, возвращает true, пользователь считается проверенным и вошел в систему.
  4. OnWebLogin || OnManagerLogin - Это событие вызывается после завершения процесса входа в систему и считается, что пользователь вошел в систему. Оно не меняет поведение процесса входа в систему.

Примеры

Такой плагин выведет в "Журнал ошибок" кто, с каким паролем, и куда пытался войти:

<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnBeforeManagerLogin':
        $modx->log(modX::LOG_LEVEL_ERROR, 'Пытался войти пользователь с именем '.$username.' и паролем '.$password.print_r($attributes, true));
        break;
}

Такой сделает пользователя неактивным, когда он будет пытатся авторизоваться:

<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnBeforeManagerLogin':
        if ($username == 'manager'){
            $user = $modx->getObject('modUser', array('username' => $username));
            $user->set('active', '0');
            $user->save();
        }
        break;
}

Смотри также

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$194 per month—let's make that $500!

Learn more