Sha256: 50f58465bde5aa2cb83d773338479f571b87321e4c30dfe510e7f4f185471ff5

Contents?: true

Size: 856 Bytes

Versions: 2

Compression:

Stored size: 856 Bytes

Contents

module PasswordChanger
  module Actions
    class ChangePassword
      private

      attr_reader :changer, :printers

      public

      def initialize(printers, changer)
        @changer  = changer
        @printers = printers
      end

      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
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
password_changer-0.0.4 lib/password_changer/actions/change_password.rb
password_changer-0.0.3 lib/password_changer/actions/change_password.rb