Files
discourse/lib/secure_session.rb
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

45 lines
827 B
Ruby
Raw Normal View History

# frozen_string_literal: true
2016-12-19 18:00:22 +11:00
# session that is not stored in cookie, expires after 1.hour unconditionally
class SecureSession
def initialize(prefix)
@prefix = prefix
end
def self.expiry
@expiry ||= 1.hour.to_i
end
def self.expiry=(val)
@expiry = val
end
def set(key, val, expires: nil)
expires ||= SecureSession.expiry
2019-12-03 10:05:53 +01:00
Discourse.redis.setex(prefixed_key(key), expires.to_i, val.to_s)
true
end
2019-11-11 11:18:12 +11:00
def ttl(key)
2019-12-03 10:05:53 +01:00
Discourse.redis.ttl(prefixed_key(key))
2019-11-11 11:18:12 +11:00
end
2016-12-19 18:00:22 +11:00
def [](key)
2019-12-03 10:05:53 +01:00
Discourse.redis.get(prefixed_key(key))
2016-12-19 18:00:22 +11:00
end
def []=(key, val)
if val == nil
2019-12-03 10:05:53 +01:00
Discourse.redis.del(prefixed_key(key))
2016-12-19 18:00:22 +11:00
else
2019-12-03 10:05:53 +01:00
Discourse.redis.setex(prefixed_key(key), SecureSession.expiry.to_i, val.to_s)
2016-12-19 18:00:22 +11:00
end
end
private
def prefixed_key(key)
"#{@prefix}#{key}"
2016-12-19 18:00:22 +11:00
end
end