patreon-8.x-2.x-dev/modules/patreon_user/patreon_user.module

modules/patreon_user/patreon_user.module
<?php

/**
 * @file
 * Contains patreon_user.module.
 */

use Drupal\Core\Form\FormStateInterface;
use Drupal\patreon_user\PatreonUserService;

/**
 * Implements hook_form_FORM_ID_alter().
 */
function patreon_user_form_user_admin_settings_alter(&$form, FormStateInterface $form_state): void {
  $section = &$form['registration_cancellation'];
  $position = (array_search('user_register', array_keys($section))) ?: count($section) - 1;
  $config = \Drupal::config('patreon_user.settings');
  $register = $config->get('patreon_user_registration');
  $method = $config->get('patreon_user_login_method');
  $path = $config->get('patreon_user_redirect_path');

  $insert = [
    'patreon_user_registration' => [
      '#title' => t('Which Patreon users can log in?'),
      '#description' => t('Select which users you wish to be logged in via the Patreon API.'),
      '#type' => 'radios',
      '#default_value' => $register,
      '#options' => [
        PatreonUserService::PATREON_USER_NO_LOGIN => t('No login via Patreon'),
        PatreonUserService::PATREON_USER_ONLY_PATRONS => t('Only my patrons'),
        PatreonUserService::PATREON_USER_ALL_USERS => t('All users from Patreon'),
      ],
    ],
    'patreon_user_registration_method' => [
      '#type' => 'radios',
      '#title' => t('Patreon user login method'),
      '#options' => [
        PatreonUserService::PATREON_USER_COPY_ACCOUNT => t('Users must set a Drupal password'),
        PatreonUserService::PATREON_USER_SINGLE_SIGN_ON => t('Users sign in directly via Patreon'),
      ],
      '#description' => t('Choose whether users must log in as normal via a Drupal account (automatically created via Patreon) or to have users with Patreon accounts automatically logged in without a password.'),
      '#default_value' => $method,
      '#states' => [
        'invisible' => [
          ':input[name=patreon_user_registration]' => ['value' => PatreonUserService::PATREON_USER_NO_LOGIN],
        ],
      ],
    ],
  ];

  if (!\Drupal::service('module_handler')->moduleExists('redirect_after_login')) {
    $insert['patreon_user_redirect_path'] = [
      '#type' => 'path',
      '#title' => t('Redirect Path'),
      '#description' => t("Enter a valid path to redirect users to after login. If not set, user's current path will be used."),
      '#required' => FALSE,
      '#default_value' => $path,
      '#states' => [
        'invisible' => [
          ':input[name=patreon_user_registration]' => ['value' => PatreonUserService::PATREON_USER_NO_LOGIN],
        ],
      ],
    ];
  }

  $section = array_slice($section, 0, $position, TRUE) +
    $insert +
    array_slice($section, $position, count($section) - $position, TRUE);

  $form['#submit'][] = 'patreon_user_form_admin_settings_submit';
}

/**
 * Custom submit to store settings.
 *
 * @param array $form
 *   Drupal Form array.
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 *   Drupal Form State object.
 */
function patreon_user_form_admin_settings_submit(array &$form, FormStateInterface $form_state): void {
  $config = \Drupal::service('config.factory')
    ->getEditable('patreon_user.settings');

  $config->set('patreon_user_redirect_path', $form_state->getValue('patreon_user_redirect_path'));
  $config->set('patreon_user_registration', $form_state->getValue('patreon_user_registration'));
  $config->set('patreon_user_login_method', $form_state->getValue('patreon_user_registration_method'))
    ->save();

  $service = \Drupal::service('patreon.api');
  $service->createRoles();
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc