module Cased::ControllerHelpers

Private Instance Methods

cased_authorization() click to toggle source
# File lib/cased/controller_helpers.rb, line 22
def cased_authorization
  @cased_authorization ||= begin
    if cookies[:cased_authorization]
      Cased::Authorization.load!(cookies[:cased_authorization])
    end
  rescue JWT::ExpiredSignature
    cookies.delete(:cased_authorization)
    nil
  end
end
cased_authorization=(token) click to toggle source
# File lib/cased/controller_helpers.rb, line 37
def cased_authorization=(token)
  if token.nil?
    cookies.delete(:cased_authorization)
  else
    Cased::Authorization.validate!(token)

    cookies[:cased_authorization] = token
  end
end
cased_authorization?() click to toggle source
# File lib/cased/controller_helpers.rb, line 33
def cased_authorization?
  cased_authorization.present?
end
cased_initial_request_context() click to toggle source
# File lib/cased/controller_helpers.rb, line 114
def cased_initial_request_context
  {
    location: request.remote_ip,
    request_http_method: request.method,
    request_user_agent: request.headers['User-Agent'],
    request_url: request.original_url,
    request_id: request.request_id,
  }
end
cased_setup_request_context() click to toggle source
# File lib/cased/controller_helpers.rb, line 110
def cased_setup_request_context
  Cased.context.merge(cased_initial_request_context)
end
current_guard_session() click to toggle source
# File lib/cased/controller_helpers.rb, line 47
def current_guard_session
  @current_guard_session ||= Cased::CLI::Session.new(
    reason: params.dig(:guard_session, :reason),
    metadata: guard_session_metadata,
    authentication: cased_authorization,
  )
end
guard() click to toggle source
# File lib/cased/controller_helpers.rb, line 63
def guard
  # TODO: Cancel previous session if not used
  return true unless guard_required?

  if guard_session_approved?
    Cased.context.merge(guard_session: current_guard_session)
    return true
  end

  if cased_authorization? && current_guard_session.create && current_guard_session.approved?
    Cased.context.merge(guard_session: current_guard_session)
    return true
  end

  render_guard
end
guard_fallback_location() click to toggle source
# File lib/cased/controller_helpers.rb, line 80
def guard_fallback_location
  if respond_to?(:root_path)
    root_path
  else
    '/'
  end
end
guard_required?() click to toggle source
# File lib/cased/controller_helpers.rb, line 18
def guard_required?
  true
end
guard_session_approved?() click to toggle source
# File lib/cased/controller_helpers.rb, line 55
def guard_session_approved?
  guard_session_id = params.dig(:guard_session, :id)
  return false unless guard_session_id.present?

  session = Cased::CLI::Session.find(guard_session_id)
  session.approved?
end
guard_session_metadata() click to toggle source
# File lib/cased/controller_helpers.rb, line 100
def guard_session_metadata
  {
    location: request.remote_ip,
    request_http_method: request.method,
    request_user_agent: request.headers['User-Agent'],
    request_url: request.original_url,
    request_id: request.request_id,
  }
end
render_guard() click to toggle source
# File lib/cased/controller_helpers.rb, line 88
def render_guard
  respond_to do |format|
    format.html do
      render template: 'cased/cli/sessions/new', layout: 'cased/cli'
    end

    format.json do
      render json: { error: true }
    end
  end
end