Как включить регистрацию пользователей, но не разрешать ни одному из этих пользователей входить в систему?

Я хочу использовать страницу регистрации пользователя для сбора пользовательских данных и использовать проверку проверки по электронной почте для фильтрации поддельных пользователей. Но я не хочу, чтобы эти пользователи могли войти на сайт. Как это можно сделать в Drupal 7?

Примечание . Так что вообще не регистрируйтесь. Я просто хочу использовать систему регистрации, чтобы отправить им электронное письмо, чтобы проверить их учетную запись.

4 голоса | спросил Patoshi パトシ 18 MaramFri, 18 Mar 2016 01:32:00 +03002016-03-18T01:32:00+03:0001 2016, 01:32:00

3 ответа


1

Уточнение вопроса

Это довольно сложный вопрос, особенно « ... без входа в систему ... ". IMO, вы должны разрешить хотя бы кому-то с определенной ролью выполнять логин ... Если вы этого не сделаете, тогда даже администратор (или user/1) не может войти в систему. Это также означает, что вы не можете просто запретить доступ к URL-адресу входа для всех (как еще администратор выполнит вход?).

Предлагаемое решение

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

Вот правило (в Правилах импорта ), который должен ответить на ваш вопрос:

{ "rules_redirect_to_logout_except_for_role_id3" : {
    "LABEL" : "Redirect to logout except for role ID3",
    "PLUGIN" : "reaction rule",
    "ACTIVE" : false,
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "user_login" : [] },
    "IF" : [
      { "NOT user_has_role" : { "account" : [ "account" ], "roles" : { "value" : { "3" : "3" } } } }
    ],
    "DO" : [
      { "mail" : {
          "to" : "[account:mail]",
          "subject" : "No login allowed",
          "message" : "You just completed a login to [site:name], located at [site:url].\r\n\r\nHowever, at this time we do not allow any login ...\r\n\r\nThanks anyway for validating some of your account data, such as your eMail ID.",
          "language" : [ "" ]
        }
      },
      { "redirect" : { "url" : "user\/logout" } }
    ]
  }
}

Правило будет запущено (Условие правил) сразу после завершения входа в систему. Для любого пользователя, который не имеет роли, которая соответствует «role id = 3» (= Условие правил), aka для любого пользователя, который не является администратором , он будет выполнять эти действия (в указанном порядке):

  1. Отправьте соответствующую электронную почту пользователю, который завершил вход (так как пользователь вошел в систему, у вас есть идентификатор электронной почты пользователя, доступный как часть информации учетной записи пользователя).
  2. Перенаправление на страницу user/logout (= принудительно вывести пользователя из системы).

Если у вас есть пользовательский интерфейс правил, вы можете просто импортировать указанное выше правило и адаптировать значение (= 3) идентификатора роли в соответствии с вашими потребностями. С этим вы решили свой вопрос.

Очевидно, вам придется адаптировать тему и контент электронной почты в соответствии с вашими потребностями. Возможно, вы также можете использовать некоторые другие (или дополнительные) идентификаторы роли, которые вы хотите разрешить для входа в систему.

С приведенным выше подходом все, что осталось сделать, чтобы полностью ответить на ваш вопрос, - это создать инвентарь (вид?) всех пользователей и проверить их дату последнего входа. Те учетные записи, которые были созданы X часов /дней назад, но для которых не было завершено ни одного входа, являются поддельные пользователи, которых вы ищете (поскольку идентификатор электронной почты, который они вводили при регистрации, был недействительным, или такие пользователи действительно не хотели получать поэтому они никогда не подтвердили свой запрос на регистрацию через соответствующий, временный, логин).

Примечание : по умолчанию правило отключено (поэтому не забудьте также включить его).

ответил Pierre.Vriens 23 Maypm16 2016, 18:07:40
4

Самый простой способ сделать это - перейти к admin/config/people/accounts и выбрать Посетители, но требуется разрешение администратора и сохранить.
выбрав эту опцию, пользователь может зарегистрироваться на сайте, и по умолчанию они status установлены на blocked, и если администратор одобрит их, они могут войти на сайт иначе они не смогут войти в сайт (заблокировать пользователя не удается войти на сайт) . Нет никаких дополнительных правил или кода.

ответил zhilevan 23 Maypm16 2016, 15:25:38
2

Вы можете использовать Правила

Событие: после сохранения новой учетной записи

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

ответил No Sssweat 21 Mayam16 2016, 03:20:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132