Skip to content

Commit 40c0848

Browse files
committed
fix(UserPlugin): Don't return disabled users on user ID and mail match
Assisted-by: ClaudeCode:claude-fable-5 Signed-off-by: David Dreschner <david.dreschner@nextcloud.com>
1 parent 21fbfa1 commit 40c0848

2 files changed

Lines changed: 54 additions & 2 deletions

File tree

build/integration/sharees_features/sharees.feature

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,24 @@ Feature: sharees
5151
And "exact remotes" sharees returned is empty
5252
And "remotes" sharees returned is empty
5353

54+
Scenario: Search without exact match does not return disabled users
55+
Given As an "admin"
56+
And assure user "Sharee1" is disabled
57+
And As an "test"
58+
When getting sharees for
59+
| search | Sharee |
60+
| itemType | file |
61+
Then the OCS status code should be "100"
62+
And the HTTP status code should be "200"
63+
And "exact users" sharees returned is empty
64+
And "users" sharees returned are
65+
| Sharee2 | 0 | Sharee2 | sharee2@system.com |
66+
And "exact groups" sharees returned is empty
67+
And "groups" sharees returned are
68+
| ShareeGroup | 1 | ShareeGroup |
69+
And "exact remotes" sharees returned is empty
70+
And "remotes" sharees returned is empty
71+
5472
Scenario: Search only with group members - denied
5573
Given As an "test"
5674
And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes"
@@ -254,6 +272,22 @@ Feature: sharees
254272
Then "exact remotes" sharees returned is empty
255273
Then "remotes" sharees returned is empty
256274

275+
Scenario: Search with exact match does not return disabled users
276+
Given As an "admin"
277+
And assure user "Sharee1" is disabled
278+
And As an "test"
279+
When getting sharees for
280+
| search | Sharee1 |
281+
| itemType | file |
282+
Then the OCS status code should be "100"
283+
And the HTTP status code should be "200"
284+
And "exact users" sharees returned is empty
285+
And "users" sharees returned is empty
286+
And "exact groups" sharees returned is empty
287+
And "groups" sharees returned is empty
288+
And "exact remotes" sharees returned is empty
289+
And "remotes" sharees returned is empty
290+
257291
Scenario: Search with exact match not-exact casing
258292
Given As an "test"
259293
When getting sharees for
@@ -364,6 +398,21 @@ Feature: sharees
364398
And "exact emails" sharees returned is empty
365399
And "emails" sharees returned is empty
366400

401+
Scenario: Search user by system e-mail address does not return disabled users
402+
Given As an "admin"
403+
And assure user "Sharee2" is disabled
404+
And As an "test"
405+
When getting sharees for
406+
| search | sharee2@system.com |
407+
| itemType | file |
408+
| shareType | 0 |
409+
Then the OCS status code should be "100"
410+
And the HTTP status code should be "200"
411+
And "exact users" sharees returned is empty
412+
And "users" sharees returned is empty
413+
And "exact emails" sharees returned is empty
414+
And "emails" sharees returned is empty
415+
367416
Scenario: Search user by system e-mail address without exact match
368417
Given As an "test"
369418
When getting sharees for

lib/private/Collaboration/Collaborators/UserPlugin.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public function search($search, $limit, $offset, ISearchResult $searchResult): b
118118

119119
if ($shareeEnumerationFullMatchUserId) {
120120
$user = $this->userManager->get($search);
121-
if ($user !== null) {
121+
if ($user !== null && $user->isEnabled()) {
122122
$users[$user->getUID()] = ['exact', $user];
123123
}
124124
}
@@ -135,7 +135,10 @@ public function search($search, $limit, $offset, ISearchResult $searchResult): b
135135
$uid = $row['uid'];
136136
$email = $row['value'];
137137
$isAdditional = $row['name'] === 'additional_mail';
138-
$users[$uid] = ['exact', $this->userManager->get($uid), $isAdditional ? $email : null];
138+
$user = $this->userManager->get($uid);
139+
if ($user !== null && $user->isEnabled()) {
140+
$users[$uid] = ['exact', $user, $isAdditional ? $email : null];
141+
}
139142
}
140143
$result->closeCursor();
141144
}

0 commit comments

Comments
 (0)