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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d2df215d3525ec9108eb6ea3ced82541277bc90bab084aa4a2963b64f4ecb8e
4
- data.tar.gz: a17d8a0a190f94bd6927141ec5a12522ac501874a36658c5f21164248b586749
3
+ metadata.gz: 268948e8ed3286dbe1ad11b6f7ecba42ca45bb792ee0248ba988e4a13f8da9fe
4
+ data.tar.gz: 9ac2c4a71c423406cffdc841e4eab2b50811cf5d4c9c1f1268c6d488f1eae3a6
5
5
  SHA512:
6
- metadata.gz: 99f7eb0ff9f06df3348b87eebf24b5eecce1afadcd9461c272205ccaa7c792e784342ad97174b317d148fd5146b7c06e75ed8dafd0217596b6814030e684f0f7
7
- data.tar.gz: fbb2ee8d65a870b82fe5ee4ec75cf295d8c7255ec121a439f477bceacc020332344da759ff57616b161c03573f4205b1630e42a7dae3c9af5d4c397753d6a79c
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
- @sign_in_controller_name = 'sessions'
15
- @sign_in_action_name = 'create'
16
- @sign_out_controller_name = 'sessions'
17
- @sign_out_action_name = 'destroy'
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
@@ -1,3 +1,3 @@
1
1
  module DeviseActivity
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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
- navigation = Navigation.create session_id:current_session.id,
34
- page_url: request.original_url,
35
- controller_name: controller_name,
36
- action_name: action_name
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
- session = Session.current(da_current_user).last
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.1.7
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-25 00:00:00.000000000 Z
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/devise_activity
86
+ homepage: http://github.com/mshahzadtariq/devise-activity
86
87
  licenses:
87
88
  - MIT
88
89
  metadata: {}