diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-12-25 11:23:29 +0000 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-12-25 11:23:29 +0000 |
commit | 92bc7038475104bad30a63fa324d9f1fd0836ce7 (patch) | |
tree | 1c5acf52ea74deadd4fd51243b05f390b6762008 | |
parent | b1b5b2218fc7dc9b26c6375163f3a9fbd32f85c5 (diff) | |
parent | 5a8c65b508614dd8896ff8af7cad6e2b33fb7244 (diff) | |
download | gitlab-ce-92bc7038475104bad30a63fa324d9f1fd0836ce7.tar.gz |
Merge branch 'support-api-lookup-by-username' into 'master'
Add API support for looking up a user by username
Needed to support Huboard
See merge request !2089
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | doc/api/users.md | 12 | ||||
-rw-r--r-- | lib/api/users.rb | 14 | ||||
-rw-r--r-- | spec/requests/api/users_spec.rb | 7 |
4 files changed, 29 insertions, 5 deletions
diff --git a/CHANGELOG b/CHANGELOG index 4591dc3013d..78d717a709f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.4.0 (unreleased) - Implement new UI for group page - Implement search inside emoji picker + - Add API support for looking up a user by username (Stan Hu) - Add project permissions to all project API endpoints (Stan Hu) - Expose Git's version in the admin area - Add "Frequently used" category to emoji picker diff --git a/doc/api/users.md b/doc/api/users.md index 7ba2db248ff..66d2fd52526 100644 --- a/doc/api/users.md +++ b/doc/api/users.md @@ -90,7 +90,17 @@ GET /users You can search for users by email or username with: `/users?search=John` -Also see `def search query` in `app/models/user.rb`. +In addition, you can lookup users by username: + +``` +GET /users?username=:username +``` + +For example: + +``` +GET /users?username=jack_smith +``` ## Single user diff --git a/lib/api/users.rb b/lib/api/users.rb index a98d668e02d..3400f0713ef 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -8,11 +8,17 @@ module API # # Example Request: # GET /users + # GET /users?search=Admin + # GET /users?username=root get do - @users = User.all - @users = @users.active if params[:active].present? - @users = @users.search(params[:search]) if params[:search].present? - @users = paginate @users + if params[:username].present? + @users = User.where(username: params[:username]) + else + @users = User.all + @users = @users.active if params[:active].present? + @users = @users.search(params[:search]) if params[:search].present? + @users = paginate @users + end if current_user.is_admin? present @users, with: Entities::UserFull diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb index 2f609c63330..4f278551d07 100644 --- a/spec/requests/api/users_spec.rb +++ b/spec/requests/api/users_spec.rb @@ -27,6 +27,13 @@ describe API::API, api: true do user['username'] == username end['username']).to eq(username) end + + it "should return one user" do + get api("/users?username=#{omniauth_user.username}", user) + expect(response.status).to eq(200) + expect(json_response).to be_an Array + expect(json_response.first['username']).to eq(omniauth_user.username) + end end context "when admin" do |