Sha256: 9e4448391d9e730340057862fd89b45340772440b60c9bc8d3f7798a44a5679e
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
# frozen_string_literal: true require "rbnacl" module PUNK class ChallengeClaimService < Service args :session def validate validates_not_null :session validates_not_empty :session return if session.blank? validates_type Session, :session validates_state :session, :created validates_event :session, :challenge end def process secret = SecretService.run.result salt = RbNaCl::Random.random_bytes(RbNaCl::PasswordHash::SCrypt::SALTBYTES) hash = RbNaCl::PasswordHash.scrypt(secret, salt, 1_048_576, 16_777_216) session.update(salt: salt, hash: hash) session.challenge! identity = session.identity case identity.claim_type when :email SendEmailWorker.perform_async( from: "GroupFire Accounts <noreply@groupfire.com>", to: identity.claim, subject: "[GroupFire] Verification Code", template: "verify", tags: [:auth], variables: { name: identity.user&.name || "New User", secret: secret } ) when :phone SendSmsWorker.perform_async( to: identity.claim, body: "Your GroupFire verification code is: #{secret}." ) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
punk-0.4.1 | lib/punk/services/challenge_claim.rb |