Merge branch 'api_for_user_creation' of dev.gitlabhq.com:gitlabhq
This commit is contained in:
commit
339555846e
4 changed files with 72 additions and 0 deletions
|
@ -65,6 +65,27 @@ Parameters:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## User creation
|
||||||
|
Create user. Available only for admin
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /users
|
||||||
|
```
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
Will return created user with status `201 Created` on success, or `404 Not
|
||||||
|
found` on fail.
|
||||||
|
|
||||||
## Current user
|
## Current user
|
||||||
|
|
||||||
Get currently authenticated user.
|
Get currently authenticated user.
|
||||||
|
|
|
@ -22,6 +22,10 @@ module Gitlab
|
||||||
unauthorized! unless current_user
|
unauthorized! unless current_user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def authenticated_as_admin!
|
||||||
|
forbidden! unless current_user.is_admin?
|
||||||
|
end
|
||||||
|
|
||||||
def authorize! action, subject
|
def authorize! action, subject
|
||||||
unless abilities.allowed?(current_user, action, subject)
|
unless abilities.allowed?(current_user, action, subject)
|
||||||
forbidden!
|
forbidden!
|
||||||
|
|
|
@ -23,6 +23,30 @@ module Gitlab
|
||||||
@user = User.find(params[:id])
|
@user = User.find(params[:id])
|
||||||
present @user, with: Entities::User
|
present @user, with: Entities::User
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
resource :user do
|
resource :user do
|
||||||
|
@ -78,6 +102,8 @@ module Gitlab
|
||||||
key = current_user.keys.find params[:id]
|
key = current_user.keys.find params[:id]
|
||||||
key.delete
|
key.delete
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,7 @@ describe Gitlab::API do
|
||||||
include ApiHelpers
|
include ApiHelpers
|
||||||
|
|
||||||
let(:user) { Factory :user }
|
let(:user) { Factory :user }
|
||||||
|
let(:admin) {Factory :admin}
|
||||||
let(:key) { Factory :key, user: user }
|
let(:key) { Factory :key, user: user }
|
||||||
|
|
||||||
describe "GET /users" do
|
describe "GET /users" do
|
||||||
|
@ -32,6 +33,26 @@ describe Gitlab::API do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "POST /users" do
|
||||||
|
before{ admin }
|
||||||
|
|
||||||
|
it "should not create invalid user" do
|
||||||
|
post api("/users", admin), { email: "invalid email" }
|
||||||
|
response.status.should == 404
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should create user" do
|
||||||
|
expect{
|
||||||
|
post api("/users", admin), Factory.attributes(:user)
|
||||||
|
}.to change{User.count}.by(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "shouldn't available for non admin users" do
|
||||||
|
post api("/users", user), Factory.attributes(:user)
|
||||||
|
response.status.should == 403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET /user" do
|
describe "GET /user" do
|
||||||
it "should return current user" do
|
it "should return current user" do
|
||||||
get api("/user", user)
|
get api("/user", user)
|
||||||
|
|
Loading…
Reference in a new issue