Module: Userbin
- Defined in:
- lib/userbin/events.rb,
lib/userbin/current.rb,
lib/userbin/railtie.rb,
lib/userbin/session.rb,
lib/userbin/userbin.rb,
lib/userbin/version.rb,
lib/userbin/basic_auth.rb,
lib/userbin/configuration.rb,
lib/userbin/authentication.rb,
lib/userbin/rails/auth_helpers.rb,
lib/userbin.rb
Defined Under Namespace
Modules: AuthHelpers
Classes: Authentication, BasicAuth, Callback, Configuration, ConfigurationError, Current, Error, Event, Events, Model, ParseSignedJSON, Railtie, SecurityError, Session, User, VerifySignature
Constant Summary
collapse
- VERSION =
"0.3.5"
Class Method Summary
collapse
Class Method Details
._current_user ⇒ Object
62
63
64
|
# File 'lib/userbin/userbin.rb', line 62
def self._current_user
current.user if current
end
|
.authenticate!(request, now = Time.now) ⇒ Object
Provide either a Rack::Request or a Hash containing :signature and :data.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/userbin/userbin.rb', line 13
def self.authenticate!(request, now = Time.now)
signature, data =
request.cookies.values_at('_ubs', '_ubd')
if signature && data && valid_signature?(signature, data)
current = Userbin::Session.new(MultiJson.decode(data))
if now > Time.at(current.expires_at / 1000)
signature, data = refresh_session(current.id)
end
end
tmp = MultiJson.decode(data) if data
self.current = Userbin::Session.new(tmp)
[signature, data]
end
|
.authenticate_events!(request, now = Time.now) ⇒ Object
2
3
4
5
6
7
8
9
|
# File 'lib/userbin/userbin.rb', line 2
def self.authenticate_events!(request, now = Time.now)
signature, data =
request.params.values_at('signature', 'data')
valid_signature?(signature, data)
[signature, data]
end
|
.authenticated? ⇒ Boolean
50
51
52
|
# File 'lib/userbin/userbin.rb', line 50
def self.authenticated?
current.authenticated? rescue false
end
|
.config ⇒ Object
46
47
48
|
# File 'lib/userbin.rb', line 46
def config
@configuration ||= Userbin::Configuration.new
end
|
36
37
38
39
40
41
42
43
44
|
# File 'lib/userbin.rb', line 36
def configure(config_hash=nil)
if config_hash
config_hash.each do |k,v|
config.send("#{k}=", v)
end
end
yield(config) if block_given?
end
|
.current ⇒ Object
42
43
44
|
# File 'lib/userbin/userbin.rb', line 42
def self.current
Thread.current[:userbin]
end
|
.current=(value) ⇒ Object
46
47
48
|
# File 'lib/userbin/userbin.rb', line 46
def self.current=(value)
Thread.current[:userbin] = value
end
|
.current_user ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/userbin/userbin.rb', line 66
def self.current_user
if Userbin.config.lock_file
file = File.open(Userbin.config.lock_file, "a+")
file.flock(File::LOCK_EX)
end
begin
if _current_user
if Userbin.config.find_user
u = Userbin.config.find_user.call(_current_user.id)
if u
u
else
if Userbin.config.create_user
profile = User.find(_current_user.id)
u = Userbin.config.create_user.call(profile)
if u
u
else
_current_user
end
else
raise ConfigurationError, "You need to implement create_user"
end
end
else
_current_user
end
end
ensure
file.flock(File::LOCK_UN) if Userbin.config.lock_file
end
end
|
.refresh_session(session_id) ⇒ Object
33
34
35
36
37
38
39
40
|
# File 'lib/userbin/userbin.rb', line 33
def self.refresh_session(session_id)
api_endpoint = ENV["USERBIN_API_ENDPOINT"] || 'https://api.userbin.com'
uri = URI("#{api_endpoint}/sessions/#{session_id}/refresh")
uri.user = config.app_id
uri.password = config.api_secret
net = Net::HTTP.post_form(uri, {})
[net['X-Userbin-Signature'], net.body]
end
|
.user ⇒ Object
107
108
109
|
# File 'lib/userbin/userbin.rb', line 107
def self.user
current_user
end
|
.user_logged_in? ⇒ Boolean
54
55
56
|
# File 'lib/userbin/userbin.rb', line 54
def self.user_logged_in?
authenticated?
end
|
.user_signed_in? ⇒ Boolean
58
59
60
|
# File 'lib/userbin/userbin.rb', line 58
def self.user_signed_in?
authenticated?
end
|