From 825081174aa70b5cbfe5947ebf268f14702b6211 Mon Sep 17 00:00:00 2001
From: Valeriy Sizov <vsv2711@gmail.com>
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 14390545bd5..da1d2bd02f9 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 0ca8fb2a1ae..8ce7c300a73 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
-- 
GitLab