Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <diosmosis@users.noreply.github.com>2018-08-21 03:47:07 +0300
committerGitHub <noreply@github.com>2018-08-21 03:47:07 +0300
commit1d6b71bdeffb8edb2fce5de3ee36c382236f7d58 (patch)
tree45f493c6c3a24cc89b765b321cd9dea51362354a /plugins/UsersManager
parentcb3ce0ab3504dade15caea1157b590fa9b26a6a9 (diff)
Make sure all sites with no access are selected in UsersManager.getSitesForUser when current user is admin. (#13323)
Diffstat (limited to 'plugins/UsersManager')
-rw-r--r--plugins/UsersManager/Sql/SiteAccessFilter.php2
-rw-r--r--plugins/UsersManager/tests/Integration/APITest.php16
2 files changed, 17 insertions, 1 deletions
diff --git a/plugins/UsersManager/Sql/SiteAccessFilter.php b/plugins/UsersManager/Sql/SiteAccessFilter.php
index ac8da88164..1a34ca9368 100644
--- a/plugins/UsersManager/Sql/SiteAccessFilter.php
+++ b/plugins/UsersManager/Sql/SiteAccessFilter.php
@@ -77,7 +77,7 @@ class SiteAccessFilter
}
if (!empty($this->idSites)) {
- $result[] = 'a.idsite IN (' . implode(',', $this->idSites) . ')';
+ $result[] = 's.idsite IN (' . implode(',', $this->idSites) . ')';
}
if (!empty($result)) {
diff --git a/plugins/UsersManager/tests/Integration/APITest.php b/plugins/UsersManager/tests/Integration/APITest.php
index 3f19c2970a..7da1339cef 100644
--- a/plugins/UsersManager/tests/Integration/APITest.php
+++ b/plugins/UsersManager/tests/Integration/APITest.php
@@ -587,6 +587,22 @@ class APITest extends IntegrationTestCase
$this->assertEquals($expected, $access);
}
+ public function test_getSitesAccessForUser_shouldLimitSitesIfUserIsAdmin_AndStillSelectNoAccessSitesCorrectly()
+ {
+ $this->addUserWithAccess('userLogin2', 'view', [1], 'userlogin2@email.com');
+
+ $this->api->setUserAccess('userLogin', 'admin', [1, 2, 3]);
+
+ $this->setCurrentUser('userLogin', 'admin', [1, 2, 3]);
+
+ $access = $this->api->getSitesAccessForUser('userLogin2', null, null, null, 'noaccess');
+ $expected = [
+ ['idsite' => '2', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ['idsite' => '3', 'site_name' => 'Piwik test', 'role' => 'noaccess', 'capabilities' => []],
+ ];
+ $this->assertEquals($expected, $access);
+ }
+
public function test_getSitesAccessForUser_shouldSelectSitesCorrectlyIfAtLeastViewRequested()
{
$this->addUserWithAccess('userLogin2', 'view', [1], 'userlogin2@email.com');