module ManageIQ::Password::PasswordMixin::ClassMethods

Public Instance Methods

encrypt_column(column) click to toggle source
# File lib/manageiq/password/password_mixin.rb, line 12
def encrypt_column(column)
  # Given a column of "password", create 4 instance methods:
  #   password            : Get the password in plain text
  #   password=           : Set the password in plain text
  #   password_encrypted  : Get the password in cryptext
  #   password_encrypted= : Set the password in cryptext

  encrypted_columns << column.to_s

  mod = generated_methods_for_password_mixin

  mod.send(:define_method, column) do
    val = send("#{column}_encrypted")
    (val.nil? || val.empty?) ? val : MiqPassword.decrypt(val)
  end

  mod.send(:define_method, "#{column}=") do |val|
    val = MiqPassword.try_encrypt(val) unless val.nil? || val.empty?
    send("#{column}_encrypted=", val)
  end

  mod.send(:define_method, "#{column}_encrypted") do
    read_attribute(column)
  end

  mod.send(:define_method, "#{column}_encrypted=") do |val|
    write_attribute(column, val)
  end
end

Private Instance Methods

generated_methods_for_password_mixin() click to toggle source
# File lib/manageiq/password/password_mixin.rb, line 44
def generated_methods_for_password_mixin
  @generated_methods_for_password_mixin ||= begin
    mod = const_set(:GeneratedMethodsForPasswordMixin, Module.new)
    include mod
    mod
  end
end