devise-activity 0.1.4 → 0.1.7

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: 11b74f54908a949e1fd7f77824b911847162465692517b1593127440f0e802ca
4
- data.tar.gz: 89582a91b0f7e5070d0f42a83027af79f3134c6c107278103f78af09c79bf173
3
+ metadata.gz: 7d2df215d3525ec9108eb6ea3ced82541277bc90bab084aa4a2963b64f4ecb8e
4
+ data.tar.gz: a17d8a0a190f94bd6927141ec5a12522ac501874a36658c5f21164248b586749
5
5
  SHA512:
6
- metadata.gz: e14f5b7c687c90c2347e805e00e9e8ba42b930f977915fd01ef345474d89afdcd18920cbe1c897b12ec20b8314b817ef457994750043410ef712789462157769
7
- data.tar.gz: d699cdb824ce163a8de475b3939138eb6b0d4a97bf911ce3a4a94e9699b8319a4587bccd604bedd123d5dcc1cea7f0f92865093f548231e7fc002bac83800dbf
6
+ metadata.gz: 99f7eb0ff9f06df3348b87eebf24b5eecce1afadcd9461c272205ccaa7c792e784342ad97174b317d148fd5146b7c06e75ed8dafd0217596b6814030e684f0f7
7
+ data.tar.gz: fbb2ee8d65a870b82fe5ee4ec75cf295d8c7255ec121a439f477bceacc020332344da759ff57616b161c03573f4205b1630e42a7dae3c9af5d4c397753d6a79c
data/README.rdoc CHANGED
@@ -1,16 +1,12 @@
1
- = Trackstamps
1
+ = DeviseActivity
2
2
 
3
- Track which user created or updated record in rails. This gem depends on devise gem and uses devise 'current_user' helper method.
4
-
5
- == Dependency
6
-
7
- This gem depends on devise gem and uses devise 'current_user' helper method.
3
+ Keep history of user page views and time spent on differnt pages in rails. This gem depends on devise gem and uses devise 'current_user' helper method which can be configured.
8
4
 
9
5
  == Installation
10
6
 
11
7
  Simply add trackstamps gem to your Gemfile.
12
8
 
13
- gem 'trackstamps'
9
+ gem 'devise-activity'
14
10
 
15
11
  Install bundler gems
16
12
 
@@ -18,20 +14,17 @@ Install bundler gems
18
14
 
19
15
  Install trackstamps
20
16
 
21
- rails generate trackstamps:install
17
+ rails generate devise_activity:install
22
18
 
19
+ You can change sessions and navigations table names from generated configuration file (config/initializers/devise_activity.rb) before generating migration.
23
20
  Generate migration on required model's table
24
21
 
25
- rails generate trackstamps:migration table_name
26
-
27
- i.e. if you need to track changes on Account model, you need to do this
22
+ rails generate devise_activity:migration
28
23
 
29
- rails generate trackstamps:migration accounts
24
+ Include DeviseActivity module to application controller or admin etc for which you want to track user activities
30
25
 
31
- It will automatically include trackstamps module inside your model class
32
-
33
- class Account < ActiveRecord::Base
34
- include Trackstamps
26
+ class ApplicationController
27
+ include DeviseActivity
35
28
 
36
29
  .....
37
30
 
@@ -46,19 +39,22 @@ And now you are ready to track changes
46
39
 
47
40
  == Usage
48
41
 
49
- It will automatically track record is created or updated by which user. i.e.
42
+ It will automatically keep of sign in's, sign out's and page views history in sessions and navigations table i.e.
50
43
 
51
- Account.last.creator
44
+ Session.all
52
45
 
53
46
  will return last account was created by which user. Similarily
54
47
 
55
- Account.find(8).updater
48
+ Session.last.navigations
49
+
50
+ Session.where(user_id: 12).all
51
+
52
+ Session.where(user_id: 12).last.navigations
56
53
 
57
54
  will tells us which user updated account with id 8
58
55
 
59
56
  == TODO
60
57
 
61
- * Autodiscover devise model class
62
58
  * Mongoid ORM support
63
59
 
64
60
  == Contributing
@@ -2,10 +2,19 @@ module DeviseActivity
2
2
  class Configuration
3
3
  attr_accessor :sessions_table_name,
4
4
  :navigations_table_name,
5
- :devise_model_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
6
10
 
7
11
  def initialize
8
-
12
+ @sessions_table_name = 'sessions'
13
+ @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'
9
18
  end
10
19
  end
11
20
  end
@@ -0,0 +1,8 @@
1
+ module DeviseActivity
2
+ module Extenders
3
+ module Navigation
4
+ # TODO: attrs tracking
5
+ end
6
+ end
7
+
8
+ end
@@ -0,0 +1,7 @@
1
+ module DeviseActivity
2
+ module Extenders
3
+ module Session
4
+ # TODO: attrs tracking
5
+ end
6
+ end
7
+ end
@@ -1,5 +1,8 @@
1
1
  module DeviseActivity
2
2
  class Navigation < ApplicationRecord
3
- #self.table_name = DeviseActivity.configuration.session_navigations_table_name
3
+ self.table_name = DeviseActivity.configuration.navigations_table_name
4
+
5
+ belongs_to :session, class_name: 'DeviseActivity::Session'
6
+
4
7
  end
5
8
  end
@@ -1,6 +1,10 @@
1
1
  module DeviseActivity
2
2
  class Session < ApplicationRecord
3
- #self.table_name = DeviseActivity.configuration.session_activities_table_name
3
+ self.table_name = DeviseActivity.configuration.sessions_table_name
4
+
5
+ scope :current, ->(current_user){ where(user_id: current_user.id)}
6
+
7
+ has_many :navigations, class_name: 'DeviseActivity::Navigation'
4
8
 
5
9
  end
6
10
  end
@@ -1,3 +1,3 @@
1
1
  module DeviseActivity
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -1,22 +1,53 @@
1
1
  require 'devise_activity/configuration'
2
2
  require 'active_record'
3
3
 
4
-
5
4
  module DeviseActivity
6
- require 'devise_activity/session'
7
- require 'devise_activity/navigation'
8
5
 
9
6
  extend ActiveSupport::Concern
10
7
 
11
8
  included do
12
9
 
13
- before_action :track_user_activity
10
+ before_action :track_navigation_activity, if: Proc.new{ da_current_user.present? }
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
14
 
15
15
  protected
16
16
 
17
- def track_user_activity
18
- DeviseActivity::Session.create
19
- DeviseActivity::Navigation.create
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
+ def track_navigation_activity
32
+ 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
37
+ end
38
+
39
+ 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
47
+ end
48
+
49
+ def da_current_user
50
+ self.send("current_#{DeviseActivity.configuration.devise_model_name}")
20
51
  end
21
52
 
22
53
  end
@@ -28,5 +59,16 @@ module DeviseActivity
28
59
  def self.configure
29
60
  self.configuration ||= Configuration.new
30
61
  yield(configuration)
62
+ # Load models after configurations
63
+ if defined?(ActiveRecord::Base)
64
+ require "devise_activity/extenders/session"
65
+ require "devise_activity/extenders/navigation"
66
+ require "devise_activity/session"
67
+ require "devise_activity/navigation"
68
+ ActiveRecord::Base.extend DeviseActivity::Extenders::Session
69
+ ActiveRecord::Base.extend DeviseActivity::Extenders::Navigation
70
+ end
71
+
72
+
31
73
  end
32
74
  end
@@ -5,4 +5,10 @@ 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
+
8
14
  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.4
4
+ version: 0.1.7
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-22 00:00:00.000000000 Z
11
+ date: 2019-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -37,6 +37,8 @@ files:
37
37
  - Rakefile
38
38
  - lib/devise_activity.rb
39
39
  - lib/devise_activity/configuration.rb
40
+ - lib/devise_activity/extenders/navigation.rb
41
+ - lib/devise_activity/extenders/session.rb
40
42
  - lib/devise_activity/navigation.rb
41
43
  - lib/devise_activity/session.rb
42
44
  - lib/devise_activity/version.rb