Loading core/modules/jsonapi/tests/src/Functional/TermTest.php +1 −1 Changes for core/modules/jsonapi/tests/src/Functional/TermTest.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ class TermTest extends ResourceTestBase { protected function setUpAuthorization($method) { switch ($method) { case 'GET': $this->grantPermissionsToTestedRole(['access content']); $this->grantPermissionsToTestedRole(['access content', 'view vocabulary labels']); break; case 'POST': Loading core/modules/taxonomy/src/VocabularyAccessControlHandler.php +12 −0 Changes for core/modules/taxonomy/src/VocabularyAccessControlHandler.php: 12 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -14,11 +14,23 @@ */ class VocabularyAccessControlHandler extends EntityAccessControlHandler { /** * {@inheritdoc} */ protected $viewLabelOperation = TRUE; /** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { switch ($operation) { case 'view label': return AccessResult::allowedIfHasPermissions($account, [ 'view vocabulary labels', 'access taxonomy overview', 'administer taxonomy', ], 'OR'); case 'access taxonomy overview': case 'view': return AccessResult::allowedIfHasPermissions($account, ['access taxonomy overview', 'administer taxonomy'], 'OR'); Loading core/modules/taxonomy/taxonomy.permissions.yml +3 −0 Changes for core/modules/taxonomy/taxonomy.permissions.yml: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -14,5 +14,8 @@ delete all taxonomy revisions: view all taxonomy revisions: title: 'View all term revisions' view vocabulary labels: title: 'View vocabulary labels' permission_callbacks: - Drupal\taxonomy\TaxonomyPermissions::permissions core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php +30 −0 Changes for core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php: 30 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Core\Render\RenderContext; use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait; use Drupal\Tests\user\Traits\UserCreationTrait; use Drupal\Tests\views\Kernel\ViewsKernelTestBase; use Drupal\user\Entity\User; use Drupal\views\Tests\ViewTestData; Loading @@ -18,6 +19,7 @@ class TaxonomyFieldVidTest extends ViewsKernelTestBase { use TaxonomyTestTrait; use UserCreationTrait; /** * Modules to enable. Loading Loading @@ -116,6 +118,34 @@ public function testViewsHandlerVidField() { $this->assertEquals($expected, $actual, 'Displayed vocabulary name should match that loaded from the term.'); $this->assertEquals('bbb', $vocabulary->id(), 'First result should be vocabulary "bbb", due to DESC sorting.'); // Test with user without 'view vocabulary labels' permission. $this->setUpCurrentUser(); $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { return $view->field['vid']->advancedRender($view->result[0]); }); $expected = ''; $this->assertEquals($expected, $actual); // Test with user with 'view vocabulary labels' permissions. $this->setUpCurrentUser([], ['view vocabulary labels']); $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { return $view->field['vid']->advancedRender($view->result[0]); }); $expected = $vocabulary->label(); $this->assertEquals($expected, $actual); // Test with user with 'administer taxonomy' and 'access taxonomy overview' // permissions. Label should be displayed for either permission. $this->setUpCurrentUser([], [ 'administer taxonomy', 'access taxonomy overview', ]); $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { return $view->field['vid']->advancedRender($view->result[0]); }); $expected = $vocabulary->label(); $this->assertEquals($expected, $actual); } } Loading
core/modules/jsonapi/tests/src/Functional/TermTest.php +1 −1 Changes for core/modules/jsonapi/tests/src/Functional/TermTest.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ class TermTest extends ResourceTestBase { protected function setUpAuthorization($method) { switch ($method) { case 'GET': $this->grantPermissionsToTestedRole(['access content']); $this->grantPermissionsToTestedRole(['access content', 'view vocabulary labels']); break; case 'POST': Loading
core/modules/taxonomy/src/VocabularyAccessControlHandler.php +12 −0 Changes for core/modules/taxonomy/src/VocabularyAccessControlHandler.php: 12 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -14,11 +14,23 @@ */ class VocabularyAccessControlHandler extends EntityAccessControlHandler { /** * {@inheritdoc} */ protected $viewLabelOperation = TRUE; /** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { switch ($operation) { case 'view label': return AccessResult::allowedIfHasPermissions($account, [ 'view vocabulary labels', 'access taxonomy overview', 'administer taxonomy', ], 'OR'); case 'access taxonomy overview': case 'view': return AccessResult::allowedIfHasPermissions($account, ['access taxonomy overview', 'administer taxonomy'], 'OR'); Loading
core/modules/taxonomy/taxonomy.permissions.yml +3 −0 Changes for core/modules/taxonomy/taxonomy.permissions.yml: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -14,5 +14,8 @@ delete all taxonomy revisions: view all taxonomy revisions: title: 'View all term revisions' view vocabulary labels: title: 'View vocabulary labels' permission_callbacks: - Drupal\taxonomy\TaxonomyPermissions::permissions
core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php +30 −0 Changes for core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php: 30 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Core\Render\RenderContext; use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait; use Drupal\Tests\user\Traits\UserCreationTrait; use Drupal\Tests\views\Kernel\ViewsKernelTestBase; use Drupal\user\Entity\User; use Drupal\views\Tests\ViewTestData; Loading @@ -18,6 +19,7 @@ class TaxonomyFieldVidTest extends ViewsKernelTestBase { use TaxonomyTestTrait; use UserCreationTrait; /** * Modules to enable. Loading Loading @@ -116,6 +118,34 @@ public function testViewsHandlerVidField() { $this->assertEquals($expected, $actual, 'Displayed vocabulary name should match that loaded from the term.'); $this->assertEquals('bbb', $vocabulary->id(), 'First result should be vocabulary "bbb", due to DESC sorting.'); // Test with user without 'view vocabulary labels' permission. $this->setUpCurrentUser(); $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { return $view->field['vid']->advancedRender($view->result[0]); }); $expected = ''; $this->assertEquals($expected, $actual); // Test with user with 'view vocabulary labels' permissions. $this->setUpCurrentUser([], ['view vocabulary labels']); $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { return $view->field['vid']->advancedRender($view->result[0]); }); $expected = $vocabulary->label(); $this->assertEquals($expected, $actual); // Test with user with 'administer taxonomy' and 'access taxonomy overview' // permissions. Label should be displayed for either permission. $this->setUpCurrentUser([], [ 'administer taxonomy', 'access taxonomy overview', ]); $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { return $view->field['vid']->advancedRender($view->result[0]); }); $expected = $vocabulary->label(); $this->assertEquals($expected, $actual); } }