Sha256: 063d2b76fa8fe7b92f615f41073ffffc0d14cf5ca7ede4b9b8d8082b4a036400

Contents?: true

Size: 1.58 KB

Versions: 15

Compression:

Stored size: 1.58 KB

Contents

module SoarSc
  module Providers
    class Sessions
      def bootstrap_sessions(stack)
        validate_session_configuration(SoarSc::environment)

        if 'true' == SoarSc::environment['USE_SESSIONS'] then
          stack.use Rack::Session::Cookie, key: SoarSc::environment['SESSION_KEY'], secret: SoarSc::environment['SESSION_SECRET']
        else
          SoarSc.auditing.warn('Not using sessions', SoarSc::startup_flow_id)
        end
      end

      private

      def validate_session_configuration(environment)
        validate_session_use(environment['USE_SESSIONS']) if not environment['USE_SESSIONS'].nil?
        validate_session_key(environment['SESSION_KEY']) if 'true' == environment['USE_SESSIONS']
        validate_session_secret(environment['SESSION_SECRET']) if 'true' == environment['USE_SESSIONS']
      end

      def validate_session_use(value)
        raise ArgumentError.new "Undefined USE_SESSIONS value" if value.nil? or (value.strip == '')
        raise ArgumentError.new "Invalid USE_SESSIONS value" if not ['true','false'].include? value
      end

      def validate_session_key(value)
        raise ArgumentError.new "Missing session key SESSION_KEY" if value.nil? or (value.strip == '')
        raise ArgumentError.new "Invalid session key SESSION_KEY" if /[^!#$%&'*+\-.0-9A-Z^_`a-z|~]+/.match(value)
      end

      def validate_session_secret(value)
        raise ArgumentError.new "Missing session secret SESSION_SECRET" if value.nil? or (value.strip == '')
        raise ArgumentError.new "Invalid session secret SESSION_SECRET" if value.length < 32
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
soar_sc_core-0.1.15 lib/providers/sessions.rb
soar_sc_core-0.1.14 lib/providers/sessions.rb
soar_sc_core-0.1.13 lib/providers/sessions.rb
soar_sc_core-0.1.12 lib/providers/sessions.rb
soar_sc_core-0.1.11 lib/providers/sessions.rb
soar_sc_core-0.1.10 lib/providers/sessions.rb
soar_sc_core-0.1.9 lib/providers/sessions.rb
soar_sc_core-0.1.8 lib/providers/sessions.rb
soar_sc_core-0.1.7 lib/providers/sessions.rb
soar_sc_core-0.1.6 lib/providers/sessions.rb
soar_sc_core-0.1.5 lib/providers/sessions.rb
soar_sc_core-0.1.4 lib/providers/sessions.rb
soar_sc_core-0.1.2 lib/providers/sessions.rb
soar_sc_core-0.1.1 lib/providers/sessions.rb
soar_sc_core-0.1.0 lib/providers/sessions.rb