Sha256: dcfdbfb290feae23b6fd25d075c228bcad13e6266aa761127b026506d626b7eb

Contents?: true

Size: 1020 Bytes

Versions: 3

Compression:

Stored size: 1020 Bytes

Contents

require 'shhh/errors'

module Shhh
  module App
    module Input
      class Handler
        def ask
          retries ||= 0
          prompt('Password: ', :green)
        rescue ::OpenSSL::Cipher::CipherError
          STDERR.puts 'Invalid password. Please try again.'
          retry if (retries += 1) < 3
          nil
        end

        def puts(*args)
          STDERR.puts args
        end

        def prompt(message, color)
          HighLine.new(STDIN, STDERR).ask(message.bold) { |q| q.echo = '•'.send(color) }
        end

        def new_password
          password         = prompt('New Password     : ', :blue)
          password_confirm = prompt('Confirm Password : ', :blue)

          raise Shhh::Errors::PasswordsDontMatch.new(
            'The passwords you entered do not match.') if password != password_confirm

          raise Shhh::Errors::PasswordTooShort.new(
            'Minimum length is 7 characters.') if password.length < 7

          password
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shhh-1.5.4 lib/shhh/app/input/handler.rb
shhh-1.4.1 lib/shhh/app/input/handler.rb
shhh-1.4.0 lib/shhh/app/input/handler.rb