Module: Singularity
- Defined in:
- lib/singularity.rb,
lib/singularity/engine.rb,
lib/singularity/version.rb,
lib/singularity/password_hash.rb
Defined Under Namespace
Classes: Engine, PasswordHash
Constant Summary
collapse
- VERSION =
"0.0.7"
Class Method Summary
collapse
Class Method Details
.cattr_accessor(attribute, default = nil) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/singularity.rb', line 8
def self.cattr_accessor(attribute, default = nil)
class_variable_set("@@#{attribute}", default)
class_eval " def self.\#{attribute}=(value)\n @@\#{attribute} = value\n end\n\n def self.\#{attribute}\n @@\#{attribute}\n end\n EOS\nend\n"
|
.destroy_session(*ids) ⇒ Object
74
75
76
|
# File 'lib/singularity.rb', line 74
def destroy_session(*ids)
redis.del( *ids.map{ |id| session_key(id) } )
end
|
.destroy_token(*tokens) ⇒ Object
78
79
80
|
# File 'lib/singularity.rb', line 78
def destroy_token(*tokens)
redis.del( *tokens.map{ |t| token_key(t) } )
end
|
.fetch_key_from_session(session_id, key) ⇒ Object
66
67
68
|
# File 'lib/singularity.rb', line 66
def fetch_key_from_session(session_id, key)
redis.hget session_key(session_id), key if session_id
end
|
.find_session_id_by_token(session_token) ⇒ Object
60
61
62
63
64
|
# File 'lib/singularity.rb', line 60
def find_session_id_by_token(session_token)
session_id = redis.get token_key(session_token)
return nil if session_id.nil?
redis.exists(session_key(session_id)) ? session_id : nil
end
|
.generate_session_token(session_id, session, options = {}) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/singularity.rb', line 30
def generate_session_token(session_id, session, options = {})
if session.key?("_token_expires") && session["_token_expires"].to_i > Time.now.to_i
unless session.nil? || session["_session_id"] != session_id
return session["_token"]
else
redis.del token_key(session['_token'])
end
end
session_token = SecureRandom.hex(32)
token_expiration = options.fetch(:expires){ redis.ttl session_key(session_id) }
token_expiration = 1_800 if token_expiration < 1
redis.setex token_key(session_token), token_expiration, session_id
session["_session_id"] = session_id
session["_token"] = session_token
session["_token_expires"] = Time.now.to_i + token_expiration
session_token
end
|
.redis ⇒ Object
82
83
84
|
# File 'lib/singularity.rb', line 82
def redis
@@redis ||= Redis::NativeHash.redis
end
|
.session_key(id) ⇒ Object
52
53
54
|
# File 'lib/singularity.rb', line 52
def session_key(id)
Singularity.session_prefix ? "#{ Singularity.session_prefix }:#{ id }" : id
end
|
.store_key_in_session(session_id, key, value) ⇒ Object
70
71
72
|
# File 'lib/singularity.rb', line 70
def store_key_in_session(session_id, key, value)
redis.hset session_key(session_id), key, value if session_id
end
|
.token_key(token) ⇒ Object
56
57
58
|
# File 'lib/singularity.rb', line 56
def token_key(token)
"#{ Singularity.token_prefix }:#{ token }"
end
|