Hook into Drupal registration and validate user info against business logic

前端 未结 4 693
粉色の甜心
粉色の甜心 2021-02-06 02:10

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

相关标签:
4条回答
  • 2021-02-06 02:35

    Here are some examples for Drupal 7:

    /**
     * Implements of hook_user_insert().
     */
    function foo_user_insert(&$edit, $account, $category) {
      // foo_user_submit($edit, $account);
    }
    
    /**
     * Implementation of hook_user_delete().
     */
    function foo_user_delete($account) {
      // foo_user_delete($account);
    }
    
    /**
     * Implements hook_form_FORM_ID_alter().
     * Form ID: user_register_form
     */
    function foo_form_user_register_form_alter($form, &$form_state) {
      if ($form['#user_category'] == 'account' && !isset($form['#user']->uid)) {
        // Foo code
      }
    }
    
    /**
     * Implements hook_form_FORM_ID_alter().
     * Form ID: user_profile_form
     */
    function foo_form_user_profile_form_alter($form, &$form_state) {
      // Set a custom form validate and submit handlers.
      $form['#validate'][] = 'foo_account_validate';
      $form['#submit'][] = 'foo_account_submit';
    }
    
    /**
     * Implements of hook_form_alter().
     * This is the same as: hook_form_FORM_ID_alter()
     */
    function foo_form_alter(&$form, $form_state, $form_id) {
      switch ($form_id) {
        case "user_profile_form":
        case "user_register_form":
          break;
      }
    }
    
    0 讨论(0)
  • 2021-02-06 02:40

    Henrik Opel answer work on Drupal 6. For Drupal 7 use yourModuleName_form_user_register_form_alter

    0 讨论(0)
  • 2021-02-06 02:54

    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'));
      }
    }
    
    0 讨论(0)
  • 2021-02-06 02:56

    Consider using the Username Originality AJAX check module: https://www.drupal.org/project/username_check

    0 讨论(0)
提交回复
热议问题