OSDN Git Service

#1585 Api for user creation: base implementation
authorValeriy Sizov <vsv2711@gmail.com>
Tue, 2 Oct 2012 09:46:01 +0000 (12:46 +0300)
committerValeriy Sizov <vsv2711@gmail.com>
Tue, 2 Oct 2012 09:46:01 +0000 (12:46 +0300)
lib/api/helpers.rb
lib/api/users.rb

index 1439054..da1d2bd 100644 (file)
@@ -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!
index 0ca8fb2..8ce7c30 100644 (file)
@@ -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