devise-activity 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: {}
|