class Cabal::API::UserService
Attributes
access_keys[R]
secret_keys[R]
users[R]
Public Class Methods
new(user_warehouse: STORAGE[:users], access_key_warehouse: STORAGE[:access_keys], secret_key_warehouse: STORAGE[:secret_keys])
click to toggle source
# File lib/cabal/api/user_service.rb, line 13 def initialize(user_warehouse: STORAGE[:users], access_key_warehouse: STORAGE[:access_keys], secret_key_warehouse: STORAGE[:secret_keys]) passthrough = Sekrat::Crypter::Passthrough.new @users = Sekrat.manager( warehouse: user_warehouse, crypter: passthrough ) @access_keys = Sekrat.manager( warehouse: access_key_warehouse, crypter: passthrough ) @secret_keys = Sekrat.manager( warehouse: secret_key_warehouse, crypter: Sekrat::Crypter::Aes ) end
Public Instance Methods
by_access_key(access_key)
click to toggle source
# File lib/cabal/api/user_service.rb, line 68 def by_access_key(access_key) email = begin access_keys.get(access_key, access_key) rescue return nil end by_email(email) end
by_email(email)
click to toggle source
# File lib/cabal/api/user_service.rb, line 52 def by_email(email) user = begin User.new(JSON.load(users.get(email, email))) rescue return nil end crypted_secret_key = begin secret_keys.get(user.access_key, user.crypto_key) rescue return nil end user.new(crypted_secret_key: crypted_secret_key) end
create(email)
click to toggle source
# File lib/cabal/api/user_service.rb, line 32 def create(email) secret_key = SecureRandom.hex(32) User.new( email: email, access_key: SecureRandom.hex(16), secret_key: secret_key, crypted_secret_key: BCrypt::Password.create(secret_key).to_s, created_at: Time.now.utc ).tap do |user| return nil unless write_user(user) && write_access_key(user) && write_secret_key(user) end end
list()
click to toggle source
# File lib/cabal/api/user_service.rb, line 48 def list users.ids.sort end
Private Instance Methods
write_access_key(user)
click to toggle source
# File lib/cabal/api/user_service.rb, line 96 def write_access_key(user) begin access_keys.put(user.access_key, user.access_key, user.email) true rescue false end end
write_secret_key(user)
click to toggle source
# File lib/cabal/api/user_service.rb, line 105 def write_secret_key(user) begin secret_keys.put(user.access_key, user.crypto_key, user.crypted_secret_key) true rescue false end end
write_user(user)
click to toggle source
# File lib/cabal/api/user_service.rb, line 79 def write_user(user) begin users.put( user.email, user.email, { email: user.email, access_key: user.access_key, created_at: user.created_at }.to_json ) true rescue false end end