You are here

function social_auth_extra_form_user_register_form_alter in Open Social 8.4

Same name and namespace in other branches
  1. 8.9 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  2. 8 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  3. 8.2 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  4. 8.3 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  5. 8.5 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  6. 8.6 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  7. 8.7 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()
  8. 8.8 modules/custom/social_auth_extra/social_auth_extra.module \social_auth_extra_form_user_register_form_alter()

Implements hook_form_FORM_ID_alter().

File

modules/custom/social_auth_extra/social_auth_extra.module, line 18
Contains social_auth_extra.module.

Code

function social_auth_extra_form_user_register_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($social_buttons = _social_auth_extra_get_buttons('register')) {
    $form += $social_buttons;
  }
  $request = \Drupal::request();
  if ($provider = $request
    ->get('provider')) {
    $network_manager = \Drupal::service('plugin.network.manager');
    $networks = $network_manager
      ->getDefinitions();
    foreach ($networks as $network) {
      $instance = $network_manager
        ->createInstance($network['id']);
      if ($instance
        ->isActive() && $instance
        ->getSocialNetworkKey() == $provider) {
        $form_state
          ->set('network_instance', $instance);
        $data_handler = $instance
          ->getDataHandler();

        // Get the username from social network if it possible.
        if (($sdk = $network_manager
          ->createInstance($network['id'])
          ->getSdk()) && ($access_token = $instance
          ->getDataHandler()
          ->get('access_token'))) {
          $auth_manager = \Drupal::service($network['id'] . '.auth_manager');
          $auth_manager
            ->setSdk($sdk);
          $auth_manager
            ->setAccessToken($access_token);
          $name = $auth_manager
            ->getUsername();
        }

        // If username is not given from social network, generate it based on
        // first name and last name.
        if (empty($name)) {

          // Translate to lowercase and remove unnecessary symbols.
          $name = Unicode::strtolower($data_handler
            ->get('name'));
          $name = \Drupal::transliteration()
            ->transliterate($name);
          $name = str_replace('  ', ' ', $name);
          $name = preg_replace('/[^0-9a-z]/si', '_', $name);
        }

        // The user already selected an authentication method and there
        // will be a drupal_set_message informing the user.
        unset($form['social_auth_extra']);
        unset($form['account']['title']);
        $form['account']['mail']['#default_value'] = $data_handler
          ->get('mail');
        $form['account']['name']['#default_value'] = $name;
        $form['actions']['submit']['#submit'] = [
          'social_auth_extra_form_user_register_form_submit',
        ];
        break;
      }
    }
  }
}