Commit 306ea84e85fe4821dd124163eef8ca5a7f041cbb

Authored by Dmitriy Zaporozhets
2 parents 92464319 a15fe61f

Merge pull request #3251 from AlexDenisov/api_additional_user_fields

Abilities added to /user and /sign_in requests
doc/api/session.md
... ... @@ -17,7 +17,17 @@ Parameters:
17 17 "email": "john@example.com",
18 18 "name": "John Smith",
19 19 "private_token": "dd34asd13as",
  20 + "blocked": false,
20 21 "created_at": "2012-05-23T08:00:58Z",
21   - "blocked": true
  22 + "bio": null,
  23 + "skype": "",
  24 + "linkedin": "",
  25 + "twitter": "",
  26 + "dark_scheme": false,
  27 + "theme_id": 1
  28 + "is_admin": false,
  29 + "can_create_group" : true,
  30 + "can_create_team" : true,
  31 + "can_create_project" : true
22 32 }
23 33 ```
... ...
doc/api/users.md
... ... @@ -154,6 +154,7 @@ GET /user
154 154 "username": "john_smith",
155 155 "email": "john@example.com",
156 156 "name": "John Smith",
  157 + "private_token": "dd34asd13as",
157 158 "blocked": false,
158 159 "created_at": "2012-05-23T08:00:58Z",
159 160 "bio": null,
... ... @@ -162,6 +163,10 @@ GET /user
162 163 "twitter": "",
163 164 "dark_scheme": false,
164 165 "theme_id": 1
  166 + "is_admin": false,
  167 + "can_create_group" : true,
  168 + "can_create_team" : true,
  169 + "can_create_project" : true
165 170 }
166 171 ```
167 172  
... ...
lib/api/entities.rb
... ... @@ -13,8 +13,12 @@ module Gitlab
13 13 expose :id, :username, :email, :name, :state, :created_at
14 14 end
15 15  
16   - class UserLogin < UserBasic
  16 + class UserLogin < User
17 17 expose :private_token
  18 + expose :is_admin?, as: :is_admin
  19 + expose :can_create_group?, as: :can_create_group
  20 + expose :can_create_project?, as: :can_create_project
  21 + expose :can_create_team?, as: :can_create_team
18 22 end
19 23  
20 24 class Hook < Grape::Entity
... ... @@ -31,7 +35,7 @@ module Gitlab
31 35 end
32 36  
33 37 class ProjectMember < UserBasic
34   - expose :project_access, :as => :access_level do |user, options|
  38 + expose :project_access, as: :access_level do |user, options|
35 39 options[:project].users_projects.find_by_user_id(user.id).project_access
36 40 end
37 41 end
... ...
lib/api/projects.rb
... ... @@ -191,7 +191,7 @@ module Gitlab
191 191 unless team_member.nil?
192 192 team_member.destroy
193 193 else
194   - {:message => "Access revoked", :id => params[:user_id].to_i}
  194 + {message: "Access revoked", id: params[:user_id].to_i}
195 195 end
196 196 end
197 197  
... ... @@ -322,7 +322,7 @@ module Gitlab
322 322 protected = user_project.protected_branches.find_by_name(@branch.name)
323 323  
324 324 unless protected
325   - user_project.protected_branches.create(:name => @branch.name)
  325 + user_project.protected_branches.create(name: @branch.name)
326 326 end
327 327  
328 328 present @branch, with: Entities::RepoObject, project: user_project
... ...
lib/api/users.rb
... ... @@ -124,7 +124,7 @@ module Gitlab
124 124 # Example Request:
125 125 # GET /user
126 126 get do
127   - present @current_user, with: Entities::User
  127 + present @current_user, with: Entities::UserLogin
128 128 end
129 129  
130 130 # Get currently authenticated user's keys
... ...
spec/requests/api/session_spec.rb
... ... @@ -13,6 +13,10 @@ describe Gitlab::API do
13 13  
14 14 json_response['email'].should == user.email
15 15 json_response['private_token'].should == user.private_token
  16 + json_response['is_admin'].should == user.is_admin?
  17 + json_response['can_create_team'].should == user.can_create_team?
  18 + json_response['can_create_project'].should == user.can_create_project?
  19 + json_response['can_create_group'].should == user.can_create_group?
16 20 end
17 21 end
18 22  
... ...
spec/requests/api/users_spec.rb
... ... @@ -214,6 +214,10 @@ describe Gitlab::API do
214 214 get api("/user", user)
215 215 response.status.should == 200
216 216 json_response['email'].should == user.email
  217 + json_response['is_admin'].should == user.is_admin?
  218 + json_response['can_create_team'].should == user.can_create_team?
  219 + json_response['can_create_project'].should == user.can_create_project?
  220 + json_response['can_create_group'].should == user.can_create_group?
217 221 end
218 222  
219 223 it "should return 401 error if user is unauthenticated" do
... ...