devise-activity 0.1.4 → 0.1.7
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 +16 -20
- data/lib/devise_activity/configuration.rb +11 -2
- data/lib/devise_activity/extenders/navigation.rb +8 -0
- data/lib/devise_activity/extenders/session.rb +7 -0
- data/lib/devise_activity/navigation.rb +4 -1
- data/lib/devise_activity/session.rb +5 -1
- data/lib/devise_activity/version.rb +1 -1
- data/lib/devise_activity.rb +49 -7
- data/lib/generators/devise_activity/templates/devise_activity_initializer.rb +6 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d2df215d3525ec9108eb6ea3ced82541277bc90bab084aa4a2963b64f4ecb8e
|
4
|
+
data.tar.gz: a17d8a0a190f94bd6927141ec5a12522ac501874a36658c5f21164248b586749
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99f7eb0ff9f06df3348b87eebf24b5eecce1afadcd9461c272205ccaa7c792e784342ad97174b317d148fd5146b7c06e75ed8dafd0217596b6814030e684f0f7
|
7
|
+
data.tar.gz: fbb2ee8d65a870b82fe5ee4ec75cf295d8c7255ec121a439f477bceacc020332344da759ff57616b161c03573f4205b1630e42a7dae3c9af5d4c397753d6a79c
|
data/README.rdoc
CHANGED
@@ -1,16 +1,12 @@
|
|
1
|
-
=
|
1
|
+
= DeviseActivity
|
2
2
|
|
3
|
-
|
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 '
|
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
|
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
|
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
|
-
|
24
|
+
Include DeviseActivity module to application controller or admin etc for which you want to track user activities
|
30
25
|
|
31
|
-
|
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
|
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
|
-
|
44
|
+
Session.all
|
52
45
|
|
53
46
|
will return last account was created by which user. Similarily
|
54
47
|
|
55
|
-
|
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
|
@@ -1,5 +1,8 @@
|
|
1
1
|
module DeviseActivity
|
2
2
|
class Navigation < ApplicationRecord
|
3
|
-
|
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
|
-
|
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
|
data/lib/devise_activity.rb
CHANGED
@@ -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 :
|
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
|
18
|
-
|
19
|
-
|
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
|
+
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-
|
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
|