Module: PromptSanitizer::Integrations::ActionControllerConcern

Defined in:
lib/prompt_sanitizer/integrations/action_controller.rb

Overview

ActionController concern — adds PII sanitization helpers to controllers.

Include in ApplicationController or a specific controller:

class ApplicationController < ActionController::Base
include PromptSanitizer::Integrations::ActionControllerConcern
end

Then in any action:

# Sanitize specific params in-place before using them:
def create
sanitize_params!(:message, :prompt)
call_llm(params[:message])
end

# Multi-turn session scoped to one action (vault cleared after block):
def chat
with_pii_session do |sess|
  clean    = sess.anonymize(params[:message])
  response = call_llm(clean)
  render json: { reply: sess.deanonymize(response) }
end
end

Instance Method Summary collapse

Instance Method Details

#pii_sanitizerPromptSanitizer::Sanitizer

The Sanitizer instance used by this controller. Defaults to the global PromptSanitizer.sanitizer. Override in a controller to use a custom instance.



59
60
61
# File 'lib/prompt_sanitizer/integrations/action_controller.rb', line 59

def pii_sanitizer
  PromptSanitizer.sanitizer
end

#sanitize_params!(*keys) ⇒ void

This method returns an undefined value.

Sanitize one or more param keys in-place.

Parameters:

  • keys (Array<Symbol, String>)

    param keys whose string values should be sanitized. Nested paths not supported (flatten first).



35
36
37
38
39
40
41
42
# File 'lib/prompt_sanitizer/integrations/action_controller.rb', line 35

def sanitize_params!(*keys)
  keys.flatten.each do |key|
    next unless params[key].is_a?(String)

    result = pii_sanitizer.sanitize(params[key])
    params[key] = result.text
  end
end

#with_pii_session(session_id: nil) {|session| ... } ⇒ Object

Yield a Session scoped to this action's PII vault. The vault is always cleared after the block, even on exception.

Yield Parameters:

Returns:

  • the block's return value



49
50
51
52
# File 'lib/prompt_sanitizer/integrations/action_controller.rb', line 49

def with_pii_session(session_id: nil, &block)
  id = session_id || "#{controller_name}##{action_name}"
  pii_sanitizer.session(session_id: id, &block)
end