/** * Ensures that the access() method on \Drupal\Core\Url objects works. */ public function testAccess() { /** @var \Drupal\user\RoleInterface $role_with_access */ $role_with_access = Role::create(['id' => 'role_with_access']); $role_with_access->grantPermission('administer users'); $role_with_access->save(); /** @var \Drupal\user\RoleInterface $role_without_access */ $role_without_access = Role::create(['id' => 'role_without_access']); $role_without_access->save(); $user_with_access = User::create(['roles' => ['role_with_access']]); $user_without_access = User::create(['roles' => ['role_without_access']]); $url_always_access = new Url('router_test.1'); $this->assertTrue($url_always_access->access($user_with_access)); $this->assertTrue($url_always_access->access($user_without_access)); $url_none_access = new Url('router_test.15'); $this->assertFalse($url_none_access->access($user_with_access)); $this->assertFalse($url_none_access->access($user_without_access)); $url_access = new Url('router_test.16'); $this->assertTrue($url_access->access($user_with_access)); $this->assertFalse($url_access->access($user_without_access)); }
/** * {@inheritdoc} */ public function blockForm($form, FormStateInterface $form_state) { // Get the theme. $theme = $form_state->get('block_theme'); // Get permissions. $url_system_theme_settings = new Url('system.theme_settings'); $url_system_theme_settings_theme = new Url('system.theme_settings_theme', array('theme' => $theme)); if ($url_system_theme_settings->access() && $url_system_theme_settings_theme->access()) { // Provide links to the Appearance Settings and Theme Settings pages // if the user has access to administer themes. $site_logo_description = $this->t('Defined on the <a href="@appearance">Appearance Settings</a> or <a href="@theme">Theme Settings</a> page.', array('@appearance' => $url_system_theme_settings->toString(), '@theme' => $url_system_theme_settings_theme->toString())); } else { // Explain that the user does not have access to the Appearance and Theme // Settings pages. $site_logo_description = $this->t('Defined on the Appearance or Theme Settings page. You do not have the appropriate permissions to change the site logo.'); } $url_system_site_information_settings = new Url('system.site_information_settings'); if ($url_system_site_information_settings->access()) { // Get paths to settings pages. $site_information_url = $url_system_site_information_settings->toString(); // Provide link to Site Information page if the user has access to // administer site configuration. $site_name_description = $this->t('Defined on the <a href="@information">Site Information</a> page.', array('@information' => $site_information_url)); $site_slogan_description = $this->t('Defined on the <a href="@information">Site Information</a> page.', array('@information' => $site_information_url)); } else { // Explain that the user does not have access to the Site Information // page. $site_name_description = $this->t('Defined on the Site Information page. You do not have the appropriate permissions to change the site logo.'); $site_slogan_description = $this->t('Defined on the Site Information page. You do not have the appropriate permissions to change the site logo.'); } $form['block_branding'] = array('#type' => 'fieldset', '#title' => $this->t('Toggle branding elements'), '#description' => $this->t('Choose which branding elements you want to show in this block instance.')); $form['block_branding']['use_site_logo'] = array('#type' => 'checkbox', '#title' => $this->t('Site logo'), '#description' => $site_logo_description, '#default_value' => $this->configuration['use_site_logo']); $form['block_branding']['use_site_name'] = array('#type' => 'checkbox', '#title' => $this->t('Site name'), '#description' => $site_name_description, '#default_value' => $this->configuration['use_site_name']); $form['block_branding']['use_site_slogan'] = array('#type' => 'checkbox', '#title' => $this->t('Site slogan'), '#description' => $site_slogan_description, '#default_value' => $this->configuration['use_site_slogan']); return $form; }