Skip to content

Instantly share code, notes, and snippets.

@duk3luk3
Last active December 21, 2015 04:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save duk3luk3/6249881 to your computer and use it in GitHub Desktop.
Save duk3luk3/6249881 to your computer and use it in GitHub Desktop.
# Create user. Available only for admin
#
# Parameters:
# email (required) - Email
# password (semi-required) - Password
# name (required) - Name
# username (required) - username
# skype - Skype ID
# linkedin - Linkedin
# twitter - Twitter account
# projects_limit - Number of projects user can create
# extern_uid - External authentication provider UID
# provider - External provider
# bio - Bio
# password_expired - password is set expired
# force_random_password - generate random password for user
# Example Request:
# POST /users
post do
authenticated_as_admin!
required_attributes! [:email, :name, :username]
attrs = attributes_for_keys [:email, :name, :skype, :linkedin, :twitter, :projects_limit, :username, :extern_uid, :provider, :bio]
#parse password strategy params
if params[:expired_password].present?
expired = params[:expired_password].to_i > 0
else
expired = false
end
if params[:force_rancomd_password].present?
force_random = params[:force_random_password].to_i > 0
else
force_random = false
end
#check params set properly
if !(force_random ^ params[:password].present?)
render_api_error!('either password or force_random must be set')
end
if expired
attrs[:password_expires_at] = Time.now
end
if force_random
attrs[:force_random_password] = true
else
attrs[:password] = params[:password]
end
user = User.new attrs, as: :admin
if user.save
present user, with: Entities::User
else
not_found!
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment