# frozen_string_literal: true
module DiscourseWebauthn
  class ChallengeGenerator
    class ChallengeSession
      attr_reader :challenge

      def initialize(params)
        @challenge = params[:challenge]
      end

      def commit_to_session(secure_session, user)
        secure_session[DiscourseWebauthn.session_challenge_key(user)] = @challenge

        self
      end
    end

    def self.generate
      ChallengeSession.new(challenge: SecureRandom.hex(30))
    end
  end
end