Commit c661f626 authored by Markus Kalkbrenner's avatar Markus Kalkbrenner Committed by Markus Kalkbrenner
Browse files

Issue #3316055 by mkalkbrenner, vlad.dancer: Trying to make an unstrusted...

Issue #3316055 by mkalkbrenner, vlad.dancer: Trying to make an unstrusted ConfigSet update on a trusted configSet
parent 1f237f32
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ search_api_solr_admin.solr_upload_configset_form:
    _title: 'Upload Configset'
  requirements:
    _search_api_solr_admin_cloud_access_check: 'TRUE'
    _search_api_solr_admin_trusted_context_supported_access_check: 'TRUE'
    _permission: 'execute solr admin task'

search_api_solr_admin.solr_reload_collection_form:
+6 −0
Original line number Diff line number Diff line
@@ -11,6 +11,12 @@ services:
    tags:
      - { name: access_check, applies_to: _search_api_solr_admin_cloud_access_check }

  access_check.search_api_solr_admin_trusted_context_supported:
    class: Drupal\search_api_solr_admin\Access\SolrAdminTrustedContextSupportedAccessCheck
    arguments: ['@current_user']
    tags:
      - { name: access_check, applies_to: _search_api_solr_admin_trusted_context_supported_access_check }

  search_api_solr_admin.command_helper:
    class: Drupal\search_api_solr_admin\Utility\SolrAdminCommandHelper
    arguments: ['@entity_type.manager', '@module_handler', '@event_dispatcher', '@extension.list.module', '@file_system', '@messenger']
+36 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\search_api_solr_admin\Access;

use Drupal\search_api_solr\SolrBackendInterface;
use Drupal\search_api\ServerInterface;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Session\AccountInterface;

/**
 * Provides an access check for the "Solr Admin" routes for Solr Cloud.
 */
class SolrAdminTrustedContextSupportedAccessCheck implements AccessInterface {

  /**
   * A custom access check.
   *
   * @param \Drupal\Core\Session\AccountInterface $account
   *   Run access checks for this account.
   * @param \Drupal\search_api\ServerInterface|null $search_api_server
   *   (optional) The Search API server entity.
   */
  public function access(AccountInterface $account, ServerInterface $search_api_server = NULL) {
    if ($search_api_server) {
      $backend = $search_api_server->getBackend();
      if ($backend instanceof SolrBackendInterface) {
        if ($backend->getSolrConnector()->isTrustedContextSupported()) {
          return AccessResult::allowed();
        }
      }
    }
    return AccessResult::forbidden();
  }

}
+7 −0
Original line number Diff line number Diff line
@@ -17,4 +17,11 @@ class BasicAuthSolrCloudConnector extends StandardSolrCloudConnector {

  use BasicAuthTrait;

  /**
   * {@inheritdoc}
   */
  public function isTrustedContextSupported() {
    return TRUE;
  }

}
+7 −0
Original line number Diff line number Diff line
@@ -374,6 +374,13 @@ abstract class SolrConnectorPluginBase extends ConfigurablePluginBase implements
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function isTrustedContextSupported() {
    return FALSE;
  }

  /**
   * Returns the Solr server URI.
   */
Loading