Skip to content

Commit df9f666

Browse files
DerDreschnerbackportbot[bot]
authored andcommitted
fix(UserPlugin): Don't return disabled users on user ID and mail match
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> [skip ci]
1 parent f718349 commit df9f666

2 files changed

Lines changed: 53 additions & 1 deletion

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: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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)