Search code examples
drupal-6hookregistration

Hook into Drupal registration and validate user info against business logic


I want to hook into the registration module. I already have a database of 50000 users who use my old website. Now I am migrating to Drupal.

I still haven't migrated the entries to drupal database. I will be checking against my old database.

When a user tries to register in Drupal, I need to check whether the username he gave is already present in that list of 50000 (and growing) entries. If it exists, I need to cancel the registration showing an error msg saying username exists..

Which hook should I use? If my code figures that the validation failed, How can I tell drupal to display an error msg?

Edit: I hooked into the hook_user and checked for the 'validate' op. I am able to validate and assign error messages. But it is happening for all forms. I want to validate only the new account creation form. How can I do that?

Thanks.


Solution

  • You should register an additional validation callback function for the registration form using hook_form_FORM_ID_alter(), somewhat like so:

    // Alter the registration form
    function yourModuleName_form_user_register_alter(&$form, &$form_state) {
      // Add your own function to the array of validation callbacks
      $form['#validate'][] = 'yourModuleName_user_register_validate';
    }
    
    // Perform your own validation
    function yourModuleName_user_register_validate($form, &$form_state) {
      // Extract the submitted name
      $name = $form_state['values']['name'];
      // Check it according to your own logic
      $is_valid_name = your_check_for_valid_name();
      // File error, when not valid
      if (!$is_valid) {
        form_set_error('name', t('Name already taken, please choose a different one'));
      }
    }