Sha256: 382f001b0203fd9a3cf741ad704f5487d408759013eff63ed7e617c7e7bf4d54

Contents?: true

Size: 727 Bytes

Versions: 2

Compression:

Stored size: 727 Bytes

Contents

require 'bcrypt'
require 'dry-struct'
require 'securerandom'
require 'cabal/api/types'

module Cabal
  module API
    class User < Dry::Struct
      transform_keys(&:to_sym)

      attribute :email, Types::Strict::String
      attribute :access_key, Types::Strict::String
      attribute :secret_key, Types::Strict::String.default('')
      attribute :crypted_secret_key, Types::Strict::String.default('')
      attribute :created_at, Types::JSON::Time

      def crypto_key
        "#{email}::#{created_at}::#{access_key}"
      end

      def authenticated_with?(secret_key)
        return false unless crypted_secret_key.length > 0

        BCrypt::Password.new(crypted_secret_key) == secret_key
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cabal-api-0.2.4 lib/cabal/api/user.rb
cabal-api-0.2.3 lib/cabal/api/user.rb