Commit 39671958 authored by alexpott's avatar alexpott

Issue #2393577 by vladan.me, Berdir: Access issue with default settings set to disabled

parent 508aa670
...@@ -83,11 +83,13 @@ public function access(UserInterface $user, AccountInterface $account) { ...@@ -83,11 +83,13 @@ public function access(UserInterface $user, AccountInterface $account) {
return $access; return $access;
} }
// If the requested user has disabled their contact form, do not allow users // Load preference of the requested user.
// to contact them.
$account_data = $this->userData->get('contact', $contact_account->id(), 'enabled'); $account_data = $this->userData->get('contact', $contact_account->id(), 'enabled');
if (isset($account_data) && empty($account_data)) { if (isset($account_data)) {
return $access; // Forbid access if the requested user has disabled their contact form.
if (empty($account_data)) {
return $access;
}
} }
// If the requested user did not save a preference yet, deny access if the // If the requested user did not save a preference yet, deny access if the
// configured default is disabled. // configured default is disabled.
......
...@@ -185,6 +185,15 @@ function testPersonalContactAccess() { ...@@ -185,6 +185,15 @@ function testPersonalContactAccess() {
$this->drupalPostForm(NULL, array('contact' => TRUE), t('Save')); $this->drupalPostForm(NULL, array('contact' => TRUE), t('Save'));
$this->assertFieldChecked('edit-contact--2'); $this->assertFieldChecked('edit-contact--2');
$this->assertTrue(\Drupal::service('user.data')->get('contact', $this->webUser->id(), 'enabled'), 'Personal contact form enabled'); $this->assertTrue(\Drupal::service('user.data')->get('contact', $this->webUser->id(), 'enabled'), 'Personal contact form enabled');
// Test with disabled global default contact form in combination with a user
// that has the contact form enabled.
\Drupal::config('contact.settings')->set('user_default_enabled', FALSE)->save();
$this->contactUser = $this->drupalCreateUser();
\Drupal::service('user.data')->set('contact', $this->contactUser->id(), 'enabled', 1);
$this->drupalGet('user/' . $this->contactUser->id() . '/contact');
$this->assertResponse(200);
} }
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment