Extended users API to support updating and deleting users.
Also added tests.
This commit is contained in:
parent
f4a6f1fd5a
commit
e954438a1d
4 changed files with 138 additions and 2 deletions
|
@ -2,7 +2,7 @@ module Gitlab
|
|||
module Entities
|
||||
class User < Grape::Entity
|
||||
expose :id, :username, :email, :name, :bio, :skype, :linkedin, :twitter,
|
||||
:dark_scheme, :theme_id, :blocked, :created_at
|
||||
:dark_scheme, :theme_id, :blocked, :created_at, :extern_uid, :provider
|
||||
end
|
||||
|
||||
class UserBasic < Grape::Entity
|
||||
|
|
|
@ -34,11 +34,14 @@ module Gitlab
|
|||
# linkedin - Linkedin
|
||||
# twitter - Twitter account
|
||||
# projects_limit - Number of projects user can create
|
||||
# extern_uid - External authentication provider UID
|
||||
# provider - External provider
|
||||
# bio - Bio
|
||||
# Example Request:
|
||||
# POST /users
|
||||
post do
|
||||
authenticated_as_admin!
|
||||
attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username]
|
||||
attrs = attributes_for_keys [:email, :name, :password, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio]
|
||||
user = User.new attrs, as: :admin
|
||||
if user.save
|
||||
present user, with: Entities::User
|
||||
|
@ -46,6 +49,48 @@ module Gitlab
|
|||
not_found!
|
||||
end
|
||||
end
|
||||
|
||||
# Update user. Available only for admin
|
||||
#
|
||||
# Parameters:
|
||||
# email - Email
|
||||
# name - Name
|
||||
# password - Password
|
||||
# skype - Skype ID
|
||||
# linkedin - Linkedin
|
||||
# twitter - Twitter account
|
||||
# projects_limit - Limit projects wich user can create
|
||||
# extern_uid - External authentication provider UID
|
||||
# provider - External provider
|
||||
# bio - Bio
|
||||
# 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]
|
||||
user = User.find_by_id(params[:id])
|
||||
|
||||
if user && user.update_attributes(attrs)
|
||||
present user, with: Entities::User
|
||||
else
|
||||
not_found!
|
||||
end
|
||||
end
|
||||
|
||||
# Delete user. Available only for admin
|
||||
#
|
||||
# Example Request:
|
||||
# DELETE /users/:id
|
||||
delete ":id" do
|
||||
authenticated_as_admin!
|
||||
user = User.find_by_id(params[:id])
|
||||
|
||||
if user
|
||||
user.destroy
|
||||
else
|
||||
not_found!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
resource :user do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue