diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/entities.rb | 7 | ||||
-rw-r--r-- | lib/api/helpers.rb | 2 | ||||
-rw-r--r-- | lib/api/users.rb | 14 |
3 files changed, 15 insertions, 8 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 1f35e9ec5fc..ab949f530ab 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -3,6 +3,9 @@ module API class User < Grape::Entity expose :id, :username, :email, :name, :bio, :skype, :linkedin, :twitter, :theme_id, :color_scheme_id, :state, :created_at, :extern_uid, :provider + expose :is_admin?, as: :is_admin + expose :can_create_group?, as: :can_create_group + expose :can_create_project?, as: :can_create_project end class UserSafe < Grape::Entity @@ -15,10 +18,6 @@ module API class UserLogin < User 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 diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index fdde6d5de6c..2b0c672c7fa 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -86,7 +86,7 @@ module API def attributes_for_keys(keys) attrs = {} keys.each do |key| - attrs[key] = params[key] if params[key].present? + attrs[key] = params[key] if params[key].present? or (params.has_key?(key) and params[key] == false) end attrs end diff --git a/lib/api/users.rb b/lib/api/users.rb index 00dc2311ffd..54d3aeecb70 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -40,13 +40,17 @@ module API # extern_uid - External authentication provider UID # provider - External provider # bio - Bio + # admin - User is admin - true or false (default) + # can_create_group - User can create groups - true or false # Example Request: # POST /users post do authenticated_as_admin! required_attributes! [:email, :password, :name, :username] - attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio] + attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio, :can_create_group, :admin] user = User.build_user(attrs, as: :admin) + admin = attrs.delete(:admin) + user.admin = admin unless admin.nil? if user.save present user, with: Entities::User else @@ -67,16 +71,20 @@ module API # extern_uid - External authentication provider UID # provider - External provider # bio - Bio + # admin - User is admin - true or false (default) + # can_create_group - User can create groups - true or false # Example Request: # PUT /users/:id put ":id" do authenticated_as_admin! - attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio] + attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio, :can_create_group, :admin] user = User.find(params[:id]) not_found!("User not found") unless user - if user.update_attributes(attrs) + admin = attrs.delete(:admin) + user.admin = admin unless admin.nil? + if user.update_attributes(attrs, as: :admin) present user, with: Entities::User else not_found! |