Как выйти из системы всех активных пользователей?

15

Вместо того, чтобы переводить мой сайт в «режим обслуживания», я хотел бы перевести его в полный «режим только для чтения». Для этого есть модуль , однако он предотвращает только «добавление и редактирование узла». Я хотел бы запретить любую пользовательскую активность, включая вход в систему и регистрацию, чтобы в основном обслуживать сайт из кэша (лака). В качестве дополнительного преимущества я бы использовал этот тип «режима только для чтения», если сайт будет заполнен запросами.

Мой вопрос: как мне выйти из системы всех активных пользователей? Логин и регистрации я могу перенаправить с помощью хука.

Уве
источник

Ответы:

13

Насколько я знаю, вы можете очистить таблицу сессий, и все пользователи будут отключены. Однако может возникнуть проблема в зависимости от установленных модулей. Например, реализующие модули hook_user_logout()никогда не будут запускать свои действия, что может быть проблемой. Убедитесь, что ни один из установленных модулей не поддерживает этот хук.

F1234k
источник
4
Как сказал @ F1234k, удаление таблицы сеансов никогда не приведет к срабатыванию hook_user_logout (). Но вы можете просто вызвать это сами. Выберите все uid из таблицы сессий и затем выполните `module_invoke_all ('user_logout', $ user);` для каждого из них. Вы можете фильтровать по тем, чей сеанс открыт более 1 часа (сеансы в Drupal могут оставаться включенными без ограничений).
Александру Савин
Благодарю. Мне нужно будет запустить хуки выхода из системы, в противном случае я получу WSOD для пользователей, которые вошли в систему с помощью модуля «постоянный вход».
Уве
13

Вы можете очистить таблицу сессий, используя drush

drush sqlq "TRUNCATE sessions"

или если вы установили префиксы для имен таблиц:

drush sqlq --db-prefix "TRUNCATE {sessions}"
batigolix
источник
0

Вы можете принудительно выйти из системы всех пользователей через хук обновления:

/**
 * Force to logout all the users.
 */
function mymodule_update_7001() {
  db_truncate('sessions')->execute();
}
Мильковский
источник
0

Использовать модуль принудительного выхода .

Характеристики

  • Форма настроек, где вы можете включить и отключить (Принудительный выход).
  • Разрешение, так что вы можете исключить некоторые роли пользователя, если вы хотите, например, исключить администратора.
Сауд Альфадли
источник