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