devise-activity 0.1.7 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +10 -4
- data/lib/devise_activity/configuration.rb +26 -9
- data/lib/devise_activity/session.rb +18 -1
- data/lib/devise_activity/stats.rb +43 -0
- data/lib/devise_activity/version.rb +1 -1
- data/lib/devise_activity.rb +5 -28
- data/lib/generators/devise_activity/templates/devise_activity_initializer.rb +0 -6
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 268948e8ed3286dbe1ad11b6f7ecba42ca45bb792ee0248ba988e4a13f8da9fe
|
4
|
+
data.tar.gz: 9ac2c4a71c423406cffdc841e4eab2b50811cf5d4c9c1f1268c6d488f1eae3a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a05740d5551f484026ec4b8e7dff37f3d14c0c5a09a0a3a6b15699b8010ad3ebec4d4fd89131682ca963d2580ca9400d55dcb4b34015a768672ac732d32eadc1
|
7
|
+
data.tar.gz: 992b73404a4cd3a51d736ed35ac001455c13f8d0a24e567e2549b89f93a88c04d0db0f67ac5d6789139eb70df2abb05129c7b7e2d2e990de3b691964d48147b6
|
data/README.rdoc
CHANGED
@@ -41,15 +41,21 @@ And now you are ready to track changes
|
|
41
41
|
|
42
42
|
It will automatically keep of sign in's, sign out's and page views history in sessions and navigations table i.e.
|
43
43
|
|
44
|
-
Session.all
|
44
|
+
DeviseActivity::Session.all
|
45
45
|
|
46
46
|
will return last account was created by which user. Similarily
|
47
47
|
|
48
|
-
Session.last.navigations
|
48
|
+
DeviseActivity::Session.last.navigations
|
49
49
|
|
50
|
-
Session.where(user_id: 12).all
|
50
|
+
DeviseActivity::Session.where(user_id: 12).all
|
51
51
|
|
52
|
-
Session.where(user_id: 12).last.navigations
|
52
|
+
DeviseActivity::Session.where(user_id: 12).last.navigations
|
53
|
+
|
54
|
+
DeviseActivity::Navigation.count
|
55
|
+
|
56
|
+
DeviseActivity::Navigation.last.action
|
57
|
+
|
58
|
+
DeviseActivity::Navigation.last.controller
|
53
59
|
|
54
60
|
will tells us which user updated account with id 8
|
55
61
|
|
@@ -2,19 +2,36 @@ module DeviseActivity
|
|
2
2
|
class Configuration
|
3
3
|
attr_accessor :sessions_table_name,
|
4
4
|
:navigations_table_name,
|
5
|
-
:devise_model_name
|
6
|
-
:sign_in_controller_name,
|
7
|
-
:sign_in_action_name,
|
8
|
-
:sign_out_controller_name,
|
9
|
-
:sign_out_action_name
|
5
|
+
:devise_model_name
|
10
6
|
|
11
7
|
def initialize
|
12
8
|
@sessions_table_name = 'sessions'
|
13
9
|
@navigations_table_name = 'navigations'
|
14
|
-
@
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
@devise_model_name = 'user'
|
11
|
+
add_warden_hooks
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_warden_hooks
|
15
|
+
Devise.setup do |c|
|
16
|
+
|
17
|
+
Warden::Manager.after_authentication do |record, auth, opts|
|
18
|
+
if record and record.class == DeviseActivity.configuration.devise_model_name.classify.constantize
|
19
|
+
begin
|
20
|
+
Session.close_all_previous_sessions(record)
|
21
|
+
Session.start_new_session(record)
|
22
|
+
rescue
|
23
|
+
puts "Something went wrong"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Warden::Manager.before_logout do |record, _warden, _options|
|
29
|
+
if record and record.class == DeviseActivity.configuration.devise_model_name.classify.constantize
|
30
|
+
Session.close_all_previous_sessions(record) rescue nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
18
35
|
end
|
19
36
|
end
|
20
37
|
end
|
@@ -2,9 +2,26 @@ module DeviseActivity
|
|
2
2
|
class Session < ApplicationRecord
|
3
3
|
self.table_name = DeviseActivity.configuration.sessions_table_name
|
4
4
|
|
5
|
-
scope :current, ->(current_user){ where(user_id: current_user.id)}
|
5
|
+
#scope :current, ->(current_user){ where(user_id: current_user.id)}
|
6
6
|
|
7
7
|
has_many :navigations, class_name: 'DeviseActivity::Navigation'
|
8
8
|
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def current user
|
12
|
+
where(user_id: user.id, signed_out_at: nil).last
|
13
|
+
end
|
14
|
+
|
15
|
+
def start_new_session record
|
16
|
+
Session.create signed_in_at: Time.now,
|
17
|
+
user_id: record.id
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def close_all_previous_sessions record
|
22
|
+
Session.where(user_id: record.id, signed_out_at: nil).update_all(signed_out_at: Time.now)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
9
26
|
end
|
10
27
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module DeviseActivity
|
2
|
+
class Stats
|
3
|
+
class << self
|
4
|
+
|
5
|
+
def most_visits_by
|
6
|
+
DeviseActivity::Navigation.joins(:session).group("sessions.user_id").count.max_by{|k, v| v }.first
|
7
|
+
end
|
8
|
+
|
9
|
+
def least_visits_by
|
10
|
+
DeviseActivity::Navigation.joins(:session).group("sessions.user_id").count.min_by{|k, v| v }.first
|
11
|
+
end
|
12
|
+
|
13
|
+
def most_popular_action
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
def least_popular_action
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def most_popular_controller
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def least_popular_controller
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
def most_visited_page
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def most_sign_ins_by
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def sign_ins_count user
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/devise_activity.rb
CHANGED
@@ -9,41 +9,18 @@ module DeviseActivity
|
|
9
9
|
|
10
10
|
before_action :track_navigation_activity, if: Proc.new{ da_current_user.present? }
|
11
11
|
|
12
|
-
prepend_before_action :track_sign_out_activity, if: Proc.new{ controller_name == DeviseActivity.configuration.sign_out_controller_name and action_name == DeviseActivity.configuration.sign_out_action_name and da_current_user.present? }
|
13
|
-
after_action :track_sign_in_activity, if: Proc.new{ controller_name == DeviseActivity.configuration.sign_in_controller_name and action_name == DeviseActivity.configuration.sign_in_action_name and da_current_user.present? }
|
14
|
-
|
15
12
|
protected
|
16
13
|
|
17
|
-
def track_sign_out_activity
|
18
|
-
current_session = Session.current(current_user).last
|
19
|
-
current_session.signed_out_at = Time.now
|
20
|
-
current_session.save
|
21
|
-
end
|
22
|
-
|
23
|
-
def track_sign_in_activity
|
24
|
-
current_session = Session.current(da_current_user).new
|
25
|
-
current_session.signed_in_at = Time.now
|
26
|
-
current_session.user_id = da_current_user.id
|
27
|
-
current_session.ip_address = request.remote_ip
|
28
|
-
current_session.save
|
29
|
-
end
|
30
|
-
|
31
14
|
def track_navigation_activity
|
32
15
|
current_session = find_or_create_current_session
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
16
|
+
Navigation.create session_id: current_session.id,
|
17
|
+
page_url: request.original_url,
|
18
|
+
controller_name: controller_name,
|
19
|
+
action_name: action_name
|
37
20
|
end
|
38
21
|
|
39
22
|
def find_or_create_current_session
|
40
|
-
|
41
|
-
unless session.present? and session.signed_out_at.nil?
|
42
|
-
session = Session.create ip_address: request.remote_ip,
|
43
|
-
user_id: da_current_user.id,
|
44
|
-
signed_in_at: Time.now
|
45
|
-
end
|
46
|
-
session
|
23
|
+
Session.current(da_current_user).present? ? Session.current(da_current_user) : Session.start_new_session(da_current_user)
|
47
24
|
end
|
48
25
|
|
49
26
|
def da_current_user
|
@@ -5,10 +5,4 @@ DeviseActivity.configure do |config|
|
|
5
5
|
config.sessions_table_name = 'sessions'
|
6
6
|
config.navigations_table_name = 'navigations'
|
7
7
|
config.devise_model_name = 'user'
|
8
|
-
|
9
|
-
config.sign_in_controller_name = 'sessions'
|
10
|
-
config.sign_in_action_name = 'create'
|
11
|
-
config.sign_out_controller_name = 'sessions'
|
12
|
-
config.sign_out_action_name = 'destroy'
|
13
|
-
|
14
8
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise-activity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- M Shahzad Tariq
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- lib/devise_activity/extenders/session.rb
|
42
42
|
- lib/devise_activity/navigation.rb
|
43
43
|
- lib/devise_activity/session.rb
|
44
|
+
- lib/devise_activity/stats.rb
|
44
45
|
- lib/devise_activity/version.rb
|
45
46
|
- lib/generators/devise_activity/install_generator.rb
|
46
47
|
- lib/generators/devise_activity/migration_generator.rb
|
@@ -82,7 +83,7 @@ files:
|
|
82
83
|
- test/dummy/public/favicon.ico
|
83
84
|
- test/test_helper.rb
|
84
85
|
- test/trackstamps_test.rb
|
85
|
-
homepage: http://github.com/mshahzadtariq/
|
86
|
+
homepage: http://github.com/mshahzadtariq/devise-activity
|
86
87
|
licenses:
|
87
88
|
- MIT
|
88
89
|
metadata: {}
|