mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-07-25 17:08:32 +00:00
40 lines
661 B
Ruby
40 lines
661 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
class NamespacedSessionStore
|
|
include Enumerable
|
|
|
|
def initialize(key, session = Session.current)
|
|
@namespace_key = key
|
|
@session = session
|
|
end
|
|
|
|
def initiated?
|
|
!session.nil?
|
|
end
|
|
|
|
def each(&block)
|
|
return unless session
|
|
|
|
(session[@namespace_key] || {}).each(&block)
|
|
end
|
|
|
|
def [](key)
|
|
return unless session
|
|
|
|
session[@namespace_key]&.fetch(key, nil)
|
|
end
|
|
|
|
def []=(key, value)
|
|
return unless session
|
|
|
|
session[@namespace_key] ||= {}
|
|
session[@namespace_key][key] = value
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :session
|
|
end
|
|
end
|