Add a skip_users filter to the project users API
This functionality is available in the /autocomplete users pseudo-API. We're attempting to replace that with the canonical API, so it needs support for this parameter too.
This commit is contained in:
parent
bbf639c43d
commit
f7f91e84f7
3 changed files with 14 additions and 0 deletions
|
@ -855,6 +855,7 @@ GET /projects/:id/users
|
|||
| Attribute | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `search` | string | no | Search for specific users |
|
||||
| `skip_users` | array[int] | no | Filter out users with the specified IDs |
|
||||
|
||||
```json
|
||||
[
|
||||
|
|
|
@ -489,11 +489,13 @@ module API
|
|||
end
|
||||
params do
|
||||
optional :search, type: String, desc: 'Return list of users matching the search criteria'
|
||||
optional :skip_users, type: Array[Integer], desc: 'Filter out users with the specified IDs'
|
||||
use :pagination
|
||||
end
|
||||
get ':id/users' do
|
||||
users = DeclarativePolicy.subject_scope { user_project.team.users }
|
||||
users = users.search(params[:search]) if params[:search].present?
|
||||
users = users.where_not_in(params[:skip_users]) if params[:skip_users].present?
|
||||
|
||||
present paginate(users), with: Entities::UserBasic
|
||||
end
|
||||
|
|
|
@ -1494,6 +1494,17 @@ describe API::Projects do
|
|||
|
||||
expect(response).to have_gitlab_http_status(404)
|
||||
end
|
||||
|
||||
it 'filters out users listed in skip_users' do
|
||||
other_user = create(:user)
|
||||
project.team.add_developer(other_user)
|
||||
|
||||
get api("/projects/#{project.id}/users?skip_users=#{user.id}", user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(json_response.size).to eq(1)
|
||||
expect(json_response[0]['id']).to eq(other_user.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue