# frozen_string_literal: true require "pakyow/support/extension" require "pakyow/support/message_verifier" require "pakyow/support/safe_string" module Pakyow module Presenter class Renderer module Behavior # @api private module InstallAuthenticity extend Support::Extension apply_extension do build do |view, app:| if app.config.presenter.embed_authenticity_token && head = view.head head.append(Support::SafeStringHelpers.html_safe("")) head.append(Support::SafeStringHelpers.html_safe("")) end end attach do |presenter| presenter.render node: -> { node = object.each_significant_node(:meta).find { |meta_node| meta_node.attributes[:name] == "pw-authenticity-token" } unless node.nil? View.from_object(node) end } do attributes[:content] = @presentables[:__verifier].sign(Support::MessageVerifier.key) end end expose do |connection| connection.set(:__verifier, connection.verifier) end end end end end end end