diff options
author | Stan Hu <stanhu@gmail.com> | 2015-12-12 22:02:05 -0800 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2015-12-24 07:57:13 -0800 |
commit | 5a8c65b508614dd8896ff8af7cad6e2b33fb7244 (patch) | |
tree | c0b86bbbbc15b74829ba2e97d8b3014d42b4bb9c | |
parent | 1a23af485cd755738f4051e04132b1eb93fc3fab (diff) | |
download | gitlab-ce-5a8c65b508614dd8896ff8af7cad6e2b33fb7244.tar.gz |
Add API support for looking up a user by username
Needed to support Huboard
-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 a80b776affa..29a175bea80 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ v 8.4.0 (unreleased) - Fix Error 500 when doing a search in dashboard before visiting any project (Stan Hu) - 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) v 8.3.1 (unreleased) 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 |