trabajo-afectivo/lib/zammad/application/initializer/session_store.rb

34 lines
1.5 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
module Zammad
class Application
module Initializer
module SessionStore
STORE_TYPE = :active_record_store # default: :cookie_store
SESSION_KEY = "_zammad_session_#{Digest::MD5.hexdigest(Rails.root.to_s)[5..15]}".freeze # default: '_zammad_session'
def self.perform
# it's important to register the session store at initialization time
# otherwise the store won't be used
# ATTENTION: Rails/Rack Cookie handling was customized to call `Session.secure_flag?`
# instead of accessing the `:secure` key (default Rack/Rails behavior).
# See: lib/core_ext/action_dispatch/middleware/cookies.rb
# See: lib/core_ext/rack/session/abstract/id.rb
# See: lib/core_ext/rack/session/utils.rb
Rails.application.config.session_store STORE_TYPE,
key: SESSION_KEY
# once the application is initialized and we can access the models
# we need to update the session_class
Rails.application.reloader.to_prepare do
ActionDispatch::Session::ActiveRecordStore.session_class = Session
end
end
end
end
end
end