class PasswordChanger::Actions::ChangePassword

Attributes

changer[R]
printers[R]

Public Class Methods

new(printers, changer) click to toggle source
# File lib/password_changer/actions/change_password.rb, line 10
def initialize(printers, changer)
  @changer  = changer
  @printers = printers
end

Public Instance Methods

run(*data) click to toggle source
# File lib/password_changer/actions/change_password.rb, line 15
def run(*data)
  users = data.flatten.map do |d|
    raise ArgumentError, 'Attribute "user_name" or "old_password" is missing!' if d[:name].blank? || d[:old_password].blank?

    new_password = PasswordChanger::PasswordGenerator.new.generate(old_password: d[:old_password])
    d[:new_password] = new_password if d[:new_password].blank?

    User.new(**d)
  end

  users.each do |u| 
    PasswordChanger.logger.info "Changing user \"#{u.name}\"."
    changer.change(u)
  end

  printers.each { |p| p.output users }
end