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);
}
