Sha256: e5d33c28aa36cd6239ed5264cfc19ec8922254006d669f2ca956c4015e799d13
Contents?: true
Size: 727 Bytes
Versions: 7
Compression:
Stored size: 727 Bytes
Contents
# frozen_string_literal: true require 'rbnacl' module PUNK class ProveClaimService < Service args :session, :secret def validate validates_not_null :session validates_not_empty :session return if session.blank? session.timeout? validates_type Session, :session validates_state :session, :pending validates_event :session, :verify end def process session.increment_attempts session.reload raise BadRequest, "Too many attempts" if session.attempt_count >= 3 hash = RbNaCl::PasswordHash.scrypt(secret, session.salt, 1_048_576, 16_777_216) proven = (session[:hash] == hash) session.verify! if proven proven end end end
Version data entries
7 entries across 7 versions & 1 rubygems