class Bosh::Director::Api::DatabaseUserManager
Public Instance Methods
authenticate(username, password)
click to toggle source
# File lib/bosh/director/api/user/database_user_manager.rb, line 10 def authenticate(username, password) # This is a dev-mode shortcut if Models::User.count == 0 return username == "admin" && password == "admin" end user = find_by_name(username) BCrypt::Password.new(user.password) == password rescue UserNotFound false end
create_user(new_user)
click to toggle source
# File lib/bosh/director/api/user/database_user_manager.rb, line 26 def create_user(new_user) user = Models::User.new user.username = new_user.username if new_user.password user.password = BCrypt::Password.create(new_user.password).to_s end save_user(user) user end
delete_user(username)
click to toggle source
# File lib/bosh/director/api/user/database_user_manager.rb, line 22 def delete_user(username) find_by_name(username).destroy end
get_user_from_json(json_user)
click to toggle source
# File lib/bosh/director/api/user/database_user_manager.rb, line 43 def get_user_from_json(json_user) hash = JSON.parse(json_user) Models::User.new(:username => hash["username"], :password => hash["password"]) end
supports_api_update?()
click to toggle source
# File lib/bosh/director/api/user/database_user_manager.rb, line 6 def supports_api_update? true end
update_user(updated_user)
click to toggle source
# File lib/bosh/director/api/user/database_user_manager.rb, line 36 def update_user(updated_user) user = find_by_name(updated_user.username) user.password = BCrypt::Password.create(updated_user.password).to_s save_user(user) user end
Private Instance Methods
find_by_name(name)
click to toggle source
@param [String] name User name @return [Models::User] User
# File lib/bosh/director/api/user/database_user_manager.rb, line 53 def find_by_name(name) user = Models::User[:username => name] if user.nil? raise UserNotFound, "User '#{name}' doesn't exist" end user end
save_user(user)
click to toggle source
Saves user in DB and handles validation errors. @param [Models::User] @return [void]
# File lib/bosh/director/api/user/database_user_manager.rb, line 64 def save_user(user) user.save rescue Sequel::ValidationFailed => e username_errors = e.errors.on(:username) if username_errors && username_errors.include?(:unique) raise UserNameTaken, "The username #{user.username} is already taken" end raise UserInvalid, "The user is invalid: #{e.errors.full_messages}" end