Module: LocalVault::VaultResolver
- Defined in:
- lib/localvault/vault_resolver.rb
Defined Under Namespace
Classes: Result
Class Method Summary collapse
- .active_vault_name(name = nil) ⇒ Object
- .build_vault(name, master_key) ⇒ Object
- .resolve(name = nil) ⇒ Object
- .session_credentials ⇒ Object
- .session_vault_name ⇒ Object
- .status(name = nil) ⇒ Object
- .unlocked_vault_names ⇒ Object
Class Method Details
.active_vault_name(name = nil) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/localvault/vault_resolver.rb', line 36 def self.active_vault_name(name = nil) return [name, "argument"] if name && !name.empty? return [ENV["LOCALVAULT_VAULT"], "env"] if ENV["LOCALVAULT_VAULT"] && !ENV["LOCALVAULT_VAULT"].empty? [Config.default_vault, "config"] end |
.build_vault(name, master_key) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/localvault/vault_resolver.rb', line 73 def self.build_vault(name, master_key) vault = Vault.new(name: name, master_key: master_key) vault.all vault rescue Crypto::DecryptionError, Store::InvalidVaultName nil end |
.resolve(name = nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/localvault/vault_resolver.rb', line 7 def self.resolve(name = nil) active_vault, source = active_vault_name(name) session_name, session_key = session_credentials if session_name == active_vault && session_key vault = build_vault(active_vault, session_key) return Result.new(vault: vault, active_vault: active_vault, active_vault_source: source, session_vault: session_name) if vault end if (master_key = SessionCache.get(active_vault)) vault = build_vault(active_vault, master_key) return Result.new(vault: vault, active_vault: active_vault, active_vault_source: source, session_vault: session_name) if vault end Result.new(vault: nil, active_vault: active_vault, active_vault_source: source, session_vault: session_name) end |
.session_credentials ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/localvault/vault_resolver.rb', line 60 def self.session_credentials token = ENV["LOCALVAULT_SESSION"] return [nil, nil] unless token decoded = Base64.strict_decode64(token) vault_name, key_b64 = decoded.split(":", 2) return [nil, nil] unless vault_name && key_b64 [vault_name, Base64.strict_decode64(key_b64)] rescue ArgumentError [nil, nil] end |
.session_vault_name ⇒ Object
43 44 45 |
# File 'lib/localvault/vault_resolver.rb', line 43 def self.session_vault_name session_credentials.first end |
.status(name = nil) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/localvault/vault_resolver.rb', line 24 def self.status(name = nil) result = resolve(name) { "localvault_home" => Config.root_path, "active_vault" => result.active_vault, "active_vault_source" => result.active_vault_source, "session_vault" => result.session_vault, "unlocked_vaults" => unlocked_vault_names, "active_vault_unlocked" => !result.vault.nil? } end |
.unlocked_vault_names ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/localvault/vault_resolver.rb', line 47 def self.unlocked_vault_names names = [] session_name, session_key = session_credentials names << session_name if session_name && session_key && build_vault(session_name, session_key) Store.list_vaults.each do |vault_name| next if names.include?(vault_name) names << vault_name if SessionCache.get(vault_name) end names.sort end |