bin/rofi/bwmenu: fix session persistence & TOTP field

This commit is contained in:
Henrik Lissner 2021-03-12 00:23:38 -05:00
parent 51d63a1829
commit aaba064089

View file

@ -131,6 +131,7 @@ module BW
@@session = PersistentData.load :session, ttl: vault_ttl @@session = PersistentData.load :session, ttl: vault_ttl
if @@session.data if @@session.data
sid, data = @@session.data sid, data = @@session.data
@@session_id = sid
else else
pass = rofi nil, %w{-p Master\ Password -password -lines 0} pass = rofi nil, %w{-p Master\ Password -password -lines 0}
error "No password given. Aborting..." if pass.empty? error "No password given. Aborting..." if pass.empty?
@ -140,6 +141,7 @@ module BW
data = JSON.parse(bw(:list, :items)) data = JSON.parse(bw(:list, :items))
@@session.save [sid, data] @@session.save [sid, data]
end end
raise "No session ID" unless @@session_id
last = PersistentData.load :last_id last = PersistentData.load :last_id
last_id, last_field = last.data if last last_id, last_field = last.data if last
@ -220,7 +222,7 @@ module BW
preamble[" Launch #{url}"] = lambda { sh ENV['BROWSER'], url } preamble[" Launch #{url}"] = lambda { sh ENV['BROWSER'], url }
data['Username'] = item['login']['username'] data['Username'] = item['login']['username']
data['Password'] = item['login']['password'] data['Password'] = item['login']['password']
data['TOTP'] = bw :get, :totp, item['id'] if item['totp'] data['TOTP'] = bw :get, :totp, url if item['login']['totp']
return (data[field.capitalize] || item[field]) if field return (data[field.capitalize] || item[field]) if field
when 2 # secure notes when 2 # secure notes
data['Notes'] = item['notes'] data['Notes'] = item['notes']