From 825081174aa70b5cbfe5947ebf268f14702b6211 Mon Sep 17 00:00:00 2001 From: Valeriy Sizov Date: Tue, 2 Oct 2012 12:46:01 +0300 Subject: [PATCH] #1585 Api for user creation: base implementation --- lib/api/helpers.rb | 4 ++++ lib/api/users.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 14390545..da1d2bd0 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -22,6 +22,10 @@ module Gitlab unauthorized! unless current_user end + def authenticated_as_admin! + forbidden! unless current_user.is_admin? + end + def authorize! action, subject unless abilities.allowed?(current_user, action, subject) forbidden! diff --git a/lib/api/users.rb b/lib/api/users.rb index 0ca8fb2a..8ce7c300 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -23,6 +23,30 @@ module Gitlab @user = User.find(params[:id]) present @user, with: Entities::User end + + # Create user. Available only for admin + # + # Parameters: + # email (required) - Email + # name (required) - Name + # password (required) - Password + # password_confirmation (required) - Password confirmation + # skype - Skype ID + # linkedin (required) - Linkedin + # twitter - Twitter account + # projects_limit - Limit projects wich user can create + # Example Request: + # POST /users + post do + authenticated_as_admin! + attrs = attributes_for_keys [:email, :name, :password, :password_confirmation, :skype, :linkedin, :twitter, :projects_limit] + user = User.new attrs + if user.save + present user, with: Entities::User + else + not_found! + end + end end resource :user do @@ -78,6 +102,8 @@ module Gitlab key = current_user.keys.find params[:id] key.delete end + + end end end