From 28e7d1a8bf3ef172331125cf56d92af85ea5e8b2 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Mon, 18 Mar 2013 20:11:28 +0000 Subject: [PATCH 1/2] Abilities added to /user and /sign_in requests --- lib/api/entities.rb | 6 +++++- lib/api/projects.rb | 4 ++-- lib/api/users.rb | 2 +- spec/requests/api/session_spec.rb | 4 ++++ spec/requests/api/users_spec.rb | 4 ++++ 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 5479765a..92191e4b 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -15,6 +15,10 @@ module Gitlab class UserLogin < UserBasic expose :private_token + expose :is_admin?, as: :is_admin + expose :can_create_group?, as: :can_create_group + expose :can_create_project?, as: :can_create_project + expose :can_create_team?, as: :can_create_team end class Hook < Grape::Entity @@ -31,7 +35,7 @@ module Gitlab end class ProjectMember < UserBasic - expose :project_access, :as => :access_level do |user, options| + expose :project_access, as: :access_level do |user, options| options[:project].users_projects.find_by_user_id(user.id).project_access end end diff --git a/lib/api/projects.rb b/lib/api/projects.rb index e82cfeca..d4f50fda 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -191,7 +191,7 @@ module Gitlab unless team_member.nil? team_member.destroy else - {:message => "Access revoked", :id => params[:user_id].to_i} + {message: "Access revoked", id: params[:user_id].to_i} end end @@ -322,7 +322,7 @@ module Gitlab protected = user_project.protected_branches.find_by_name(@branch.name) unless protected - user_project.protected_branches.create(:name => @branch.name) + user_project.protected_branches.create(name: @branch.name) end present @branch, with: Entities::RepoObject, project: user_project diff --git a/lib/api/users.rb b/lib/api/users.rb index e9cf16fa..567750df 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -124,7 +124,7 @@ module Gitlab # Example Request: # GET /user get do - present @current_user, with: Entities::User + present @current_user, with: Entities::UserLogin end # Get currently authenticated user's keys diff --git a/spec/requests/api/session_spec.rb b/spec/requests/api/session_spec.rb index 2cdb0d7e..4a37312b 100644 --- a/spec/requests/api/session_spec.rb +++ b/spec/requests/api/session_spec.rb @@ -13,6 +13,10 @@ describe Gitlab::API do json_response['email'].should == user.email json_response['private_token'].should == user.private_token + json_response['is_admin'].should == user.is_admin? + json_response['can_create_team'].should == user.can_create_team? + json_response['can_create_project'].should == user.can_create_project? + json_response['can_create_group'].should == user.can_create_group? end end diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb index 749769d4..b4688dd2 100644 --- a/spec/requests/api/users_spec.rb +++ b/spec/requests/api/users_spec.rb @@ -214,6 +214,10 @@ describe Gitlab::API do get api("/user", user) response.status.should == 200 json_response['email'].should == user.email + json_response['is_admin'].should == user.is_admin? + json_response['can_create_team'].should == user.can_create_team? + json_response['can_create_project'].should == user.can_create_project? + json_response['can_create_group'].should == user.can_create_group? end it "should return 401 error if user is unauthenticated" do From a15fe61fb041ae7c2704bde6d73c246b85d618f7 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Mon, 18 Mar 2013 21:06:24 +0000 Subject: [PATCH 2/2] API docs updated --- doc/api/session.md | 12 +++++++++++- doc/api/users.md | 5 +++++ lib/api/entities.rb | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/doc/api/session.md b/doc/api/session.md index c7e57aac..d68788d5 100644 --- a/doc/api/session.md +++ b/doc/api/session.md @@ -17,7 +17,17 @@ Parameters: "email": "john@example.com", "name": "John Smith", "private_token": "dd34asd13as", + "blocked": false, "created_at": "2012-05-23T08:00:58Z", - "blocked": true + "bio": null, + "skype": "", + "linkedin": "", + "twitter": "", + "dark_scheme": false, + "theme_id": 1 + "is_admin": false, + "can_create_group" : true, + "can_create_team" : true, + "can_create_project" : true } ``` diff --git a/doc/api/users.md b/doc/api/users.md index 70a2449f..c05bcb3e 100644 --- a/doc/api/users.md +++ b/doc/api/users.md @@ -154,6 +154,7 @@ GET /user "username": "john_smith", "email": "john@example.com", "name": "John Smith", + "private_token": "dd34asd13as", "blocked": false, "created_at": "2012-05-23T08:00:58Z", "bio": null, @@ -162,6 +163,10 @@ GET /user "twitter": "", "dark_scheme": false, "theme_id": 1 + "is_admin": false, + "can_create_group" : true, + "can_create_team" : true, + "can_create_project" : true } ``` diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 92191e4b..42dae53b 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -13,7 +13,7 @@ module Gitlab expose :id, :username, :email, :name, :state, :created_at end - class UserLogin < UserBasic + class UserLogin < User expose :private_token expose :is_admin?, as: :is_admin expose :can_create_group?, as: :can_create_group