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