3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/effective_logging/user_logger.rb', line 3
def self.create_warden_hooks
Warden::Manager.after_authentication do |user, warden, opts|
EffectiveLogger.success('user login',
:user => user,
:ip => warden.request.ip.presence,
:referrer => warden.request.referrer,
:user_agent => warden.request.user_agent
)
end
Warden::Manager.after_set_user do |user, warden, opts|
if (opts[:event] == :set_user rescue false) EffectiveLogger.success('user login',
:user => user,
:ip => warden.request.ip.presence,
:referrer => warden.request.referrer,
:user_agent => warden.request.user_agent,
:notes => 'after password reset'
)
end
end
Warden::Manager.before_logout do |user, warden, opts|
if user.respond_to?(:timedout?) && user.respond_to?(:timeout_in)
scope = opts[:scope]
last_request_at = (warden.request.session["warden.#{scope}.#{scope}.session"]['last_request_at'] rescue Time.zone.now)
if last_request_at.is_a? Integer
last_request_at = Time.at(last_request_at).utc
elsif last_request_at.is_a? String
last_request_at = Time.parse(last_request_at)
end
if user.timedout?(last_request_at) && !warden.request.env['devise.skip_timeout']
EffectiveLogger.success('user logout', :user => user, :timedout => true)
else
EffectiveLogger.success('user logout', :user => user)
end
else EffectiveLogger.success('user logout', :user => user)
end
end
end
|