Проверка регистрационных данных с помощью внешнего хранилища идентификаторов в Drupal - PullRequest
2 голосов
/ 02 ноября 2009

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

Это возможно с любым существующим модулем? Если нет, то как лучше всего развить эту функциональность?

Ответы [ 2 ]

2 голосов
/ 02 ноября 2009

Я не знаю о существующем модуле, позволяющем добавить пользовательскую проверку, но это довольно легко реализовать, используя действие 'validate' hook_user():

function yourModule_user($op, &$edit, &$account, $category = NULL) {
  // Are we in the validation phase of a new user registration?
  if ('validate' == $op && 'user_register' == $edit['form_id'] && 'account' == $category) {
    // Yes, do custom validation...
    // NOTE: Just an example to validate by email.
    // Check the other elements in $edit array (e.g. 'name') for more options
    $mail_is_valid = yourModule_custom_mail_validation($edit['mail']);
    // Is the mail address OK?
    if (!$mail_is_valid) {
      // No, set error on mail form field
      form_set_error('mail', t('your custom error message'));
    }
  }
}

Это приведет к остановке процесса регистрации и повторному отображению формы регистрации с сообщением об ошибке в почтовом поле, если yourModule_custom_mail_validation() не возвращает TRUE.

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

 && 'user_register' == $edit['form_id']

часть из первого предложения if - код будет запускаться для каждого пользовательского представления формы редактирования, а не только для регистрации.

1 голос
/ 02 ноября 2009

Если вы используете для аутентификации сервер LDAP, существует модуль LDAP . Проверьте это.

Для аутентификации в каком-либо другом веб-сервисе вам нужно написать модуль и реализовать hook_user , в частности, случай 'login'. Если при входе учетные данные пользователя не совпадают с учетными данными вашего веб-сервиса, вы можете выйти из системы и отобразить сообщение, возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...