This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/lib/secure_session.rb
Joffrey JAFFEUX fbeb488ec5 DEV: s/\$redis/Discourse\.redis
With manual merge for conflicts
2019-12-03 13:27:12 +01:00

42 lines
783 B
Ruby

# frozen_string_literal: true
# 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
Discourse.redis.setex(prefixed_key(key), SecureSession.expiry.to_i, val.to_s)
true
end
def [](key)
Discourse.redis.get(prefixed_key(key))
end
def []=(key, val)
if val == nil
Discourse.redis.del(prefixed_key(key))
else
Discourse.redis.setex(prefixed_key(key), SecureSession.expiry.to_i, val.to_s)
end
val
end
private
def prefixed_key(key)
"#{@prefix}#{key}"
end
end