pantheon_decoupled-1.0.0-alpha3/pantheon_decoupled.install

pantheon_decoupled.install
<?php

/**
 * @file
 * Install, update and uninstall functions for pantheon_decoupled.
 */

use Drupal\consumers\Entity\Consumer;
use Drupal\decoupled_preview\Entity\DpPreviewSite;
use Drupal\user\Entity\User;

/**
 * Implements hook_install().
 */
function pantheon_decoupled_install() {
  // Create keys for Simple OAuth.
  $keys = _pantheon_decoupled_generate_keys();
  // And set their paths in config.
  $config_factory = \Drupal::configFactory();
  $config = $config_factory->getEditable('simple_oauth.settings');
  $config->set('public_key', $keys['public']);
  $config->set('private_key', $keys['private']);
  $config->save(TRUE);

  // Create example user to be used with example consumer.
  $user = User::create();
  $password = \Drupal::service('password_generator')->generate();
  $user->setPassword($password);
  $user->enforceIsNew();
  $user->setEmail("pantheon_decoupled@example.com");
  $user->setUsername("pantheon_decoupled");
  $user->addRole('pantheon_decoupled');
  $user->set("status", 1);
  $user->save();

  // Create example consumer.
  $client_secret = \Drupal::service('password_generator')->generate(16);
  $consumer = Consumer::create([
    'label' => 'Example Consumer',
    'description' => 'This is an example consumer for Pantheon\'s Decoupled Starter Kit. This was created programmatically when the pantheon_decoupled module was first installed. Feel free to edit, or delete this.',
    'user_id' => $user->id(),
    'client_id' => $user->uuid(),
    'secret' => $client_secret,
    'roles' => ['pantheon_decoupled'],
  ]);
  $consumer->save();
  $client_id = $consumer->getClientId();

  // Create Preview Site configuration.
  $shared_secret = \Drupal::service('password_generator')->generate(16);
  $example_preview = DpPreviewSite::create([
    'id' => 'example_nextjs_preview',
    'label' => 'Example NextJS Preview',
    'url' => 'https://example.site/api/preview',
    'secret' => $shared_secret,
    'content_type' => [],
    'preview_type'  => 'nextjs',
    'oauth_consumer' => $user->uuid(),
  ]);
  $example_preview->save();

  // Set messages for post installation steps.
  $url = \Drupal::request()->getSchemeAndHttpHost();
  \Drupal::messenger()->addWarning(t('Pantheon Decoupled Post Installation Steps:'));
  \Drupal::messenger()->addWarning(t('In order to complete your configuration, visit the <a href=":url">Front-End Sites Administration</a> section.', array(
    ':url' => $url .'/admin/config/services/pantheon-fes/',
  )));

  $anonymous_login_config = $config_factory->getEditable('anonymous_login.settings');
  $anonymous_login_config->set('paths',  "~/router/*\r\n~/jsonapi\r\n~/jsonapi/*\r\n*\r\n~/oauth/token\r\n~/*/jsonapi\r\n~/*/jsonapi/*");
  $anonymous_login_config->save(TRUE);
}

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

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