class SimplyGenius::Atmos::Otp

Public Class Methods

new() click to toggle source
# File lib/simplygenius/atmos/otp.rb, line 12
def initialize
  @scoped_path = "atmos.otp.#{Atmos.config[:org]}"
  Atmos.config[@scoped_path] ||= {}
  @scoped_secret_store = Atmos.config[@scoped_path]
end

Public Instance Methods

add(name, secret) click to toggle source
# File lib/simplygenius/atmos/otp.rb, line 18
def add(name, secret)
  old = @scoped_secret_store[name]
  logger.info "Replacing OTP secret #{name}=#{old}" if old
  @scoped_secret_store[name] = secret
end
generate(name) click to toggle source
# File lib/simplygenius/atmos/otp.rb, line 36
def generate(name)
  otp(name).try(:now)
end
remove(name) click to toggle source
# File lib/simplygenius/atmos/otp.rb, line 24
def remove(name)
  old = @scoped_secret_store.delete(name)
  @otp.try(:delete, name)
  logger.info "Removed OTP secret #{name}=#{old}" if old
end
save() click to toggle source
# File lib/simplygenius/atmos/otp.rb, line 30
def save
  data = SettingsHash.new
  data.notation_put(@scoped_path, @scoped_secret_store)
  Atmos.config.save_user_config_file(data)
end

Private Instance Methods

otp(name) click to toggle source
# File lib/simplygenius/atmos/otp.rb, line 42
def otp(name)
  @otp ||= {}
  @otp[name] ||= begin
    secret =  @scoped_secret_store[name]
    totp = nil
    if secret
      totp = ROTP::TOTP.new(secret)
    else
      logger.debug "OTP secret does not exist for '#{name}'"
    end
    totp
  end
end