warden_watch 0.0.1

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.
Files changed (59) hide show
  1. data/.gitignore +20 -0
  2. data/.rspec +2 -0
  3. data/.rvmrc +2 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +27 -0
  7. data/Rakefile +15 -0
  8. data/app/models/warden_watch/user_visit.rb +9 -0
  9. data/db/migrate/20130214010145_create_warden_watch_user_visits.rb +12 -0
  10. data/lib/tasks/warden_watch_tasks.rake +4 -0
  11. data/lib/warden_watch.rb +12 -0
  12. data/lib/warden_watch/authentication_event.rb +21 -0
  13. data/lib/warden_watch/engine.rb +15 -0
  14. data/lib/warden_watch/hook.rb +14 -0
  15. data/lib/warden_watch/model.rb +21 -0
  16. data/lib/warden_watch/version.rb +4 -0
  17. data/script/rails +8 -0
  18. data/spec/dummy/README.rdoc +261 -0
  19. data/spec/dummy/Rakefile +7 -0
  20. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  21. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  23. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  24. data/spec/dummy/app/mailers/.gitkeep +0 -0
  25. data/spec/dummy/app/models/.gitkeep +0 -0
  26. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  27. data/spec/dummy/config.ru +4 -0
  28. data/spec/dummy/config/application.rb +59 -0
  29. data/spec/dummy/config/boot.rb +10 -0
  30. data/spec/dummy/config/database.yml +25 -0
  31. data/spec/dummy/config/environment.rb +5 -0
  32. data/spec/dummy/config/environments/development.rb +37 -0
  33. data/spec/dummy/config/environments/production.rb +67 -0
  34. data/spec/dummy/config/environments/test.rb +37 -0
  35. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  36. data/spec/dummy/config/initializers/inflections.rb +15 -0
  37. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  38. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  39. data/spec/dummy/config/initializers/session_store.rb +8 -0
  40. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/spec/dummy/config/locales/en.yml +5 -0
  42. data/spec/dummy/config/routes.rb +58 -0
  43. data/spec/dummy/db/migrate/20130214014453_create_users.rb +9 -0
  44. data/spec/dummy/db/migrate/20130214014754_create_warden_watch_user_visits.warden_watch.rb +13 -0
  45. data/spec/dummy/db/schema.rb +29 -0
  46. data/spec/dummy/lib/assets/.gitkeep +0 -0
  47. data/spec/dummy/log/.gitkeep +0 -0
  48. data/spec/dummy/public/404.html +26 -0
  49. data/spec/dummy/public/422.html +26 -0
  50. data/spec/dummy/public/500.html +25 -0
  51. data/spec/dummy/public/favicon.ico +0 -0
  52. data/spec/dummy/script/rails +6 -0
  53. data/spec/models/warden_watch/user_visit_spec.rb +12 -0
  54. data/spec/spec_helper.rb +22 -0
  55. data/spec/warden_watch/authentication_event_spec.rb +28 -0
  56. data/spec/warden_watch/hook_spec.rb +74 -0
  57. data/spec/warden_watch/model_spec.rb +39 -0
  58. data/warden_watch.gemspec +35 -0
  59. metadata +358 -0
@@ -0,0 +1,9 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def up
3
+ create_table :users do
4
+ end
5
+ end
6
+
7
+ def down
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # This migration comes from warden_watch (originally 20130214010145)
2
+ class CreateWardenWatchUserVisits < ActiveRecord::Migration
3
+ def change
4
+ create_table :warden_watch_user_visits do |t|
5
+ t.string :ip_address
6
+ t.references :visitor, :polymorphic => true
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :warden_watch_user_visits, [:visitor_id, :visitor_type]
11
+ end
12
+ end
13
+
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 20130214014754) do
15
+
16
+ create_table "users", :force => true do |t|
17
+ end
18
+
19
+ create_table "warden_watch_user_visits", :force => true do |t|
20
+ t.string "ip_address"
21
+ t.integer "visitor_id"
22
+ t.string "visitor_type"
23
+ t.datetime "created_at", :null => false
24
+ t.datetime "updated_at", :null => false
25
+ end
26
+
27
+ add_index "warden_watch_user_visits", ["visitor_id", "visitor_type"], :name => "index_warden_watch_user_visits_on_visitor_id_and_visitor_type"
28
+
29
+ end
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe WardenWatch::UserVisit do
4
+ class User < ActiveRecord::Base
5
+ self.table_name = 'users'
6
+
7
+ include WardenWatch::Model
8
+ end
9
+
10
+ it { should belong_to :visitor }
11
+ end
12
+
@@ -0,0 +1,22 @@
1
+ require 'mocha/api'
2
+ require 'bourne'
3
+
4
+ ENV["RAILS_ENV"] = "test"
5
+
6
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
7
+
8
+ require 'rspec/rails'
9
+ require 'shoulda-matchers'
10
+
11
+ require 'warden_watch'
12
+
13
+ Rails.backtrace_cleaner.remove_silencers!
14
+
15
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
16
+
17
+ RSpec.configure do |config|
18
+ config.mock_with :mocha
19
+
20
+ config.treat_symbols_as_metadata_keys_with_true_values = true
21
+ end
22
+
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe WardenWatch::AuthenticationEvent do
4
+ let(:mock_user) do
5
+ mock.tap do |m|
6
+ m.stubs(:track_visit!)
7
+ end
8
+ end
9
+
10
+ let(:auth) { [200, {}, ''] }
11
+ let(:opts) { { :event => :not_fetch} }
12
+
13
+ let(:auth_event) do
14
+ WardenWatch::AuthenticationEvent.new(mock_user, auth, opts)
15
+ end
16
+
17
+ it 'tracks an authentication event when it is not fetch' do
18
+ auth_event.track!
19
+
20
+ expect(mock_user).to have_received(:track_visit!).once
21
+ end
22
+
23
+ it 'does not track an authentication event when it is fetch' do
24
+ opts[:event] = :fetch
25
+ expect(mock_user).to have_received(:track_visit!).never
26
+ end
27
+ end
28
+
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+ require 'rack/test'
3
+
4
+ describe WardenWatch::Hook do
5
+ include Warden::Test::Helpers
6
+
7
+ before :all do
8
+ Warden.test_mode!
9
+ end
10
+
11
+ before(:each) do
12
+ Warden::Manager._after_set_user.clear
13
+ end
14
+
15
+ it 'tracks an authentication event when a user is set' do
16
+ mock_auth_event = mock.tap do |m|
17
+ m.stubs(:track!)
18
+ end
19
+
20
+ WardenWatch::AuthenticationEvent.stubs(:new).returns(mock_auth_event)
21
+ WardenWatch::Hook.enable!
22
+
23
+ app = lambda do |e|
24
+ e['warden'].set_user("foo")
25
+ valid_response
26
+ end
27
+
28
+ env = env_with_params
29
+ setup_rack(app).call(env)
30
+
31
+ expect(mock_auth_event).to have_received(:track!).once
32
+ end
33
+
34
+ protected
35
+ #taken from warden core
36
+ def setup_rack(app = nil, opts = {}, &block)
37
+ app ||= block if block_given?
38
+
39
+ opts[:failure_app] ||= [500, {}, 'Error']
40
+ opts[:default_strategies] ||= [:password]
41
+ opts[:default_serializers] ||= [:session]
42
+ blk = opts[:configurator] || proc{}
43
+
44
+ Rack::Builder.new do
45
+ use opts[:session] || SessionHelper
46
+ use Warden::Manager, opts, &blk
47
+ run app
48
+ end
49
+ end
50
+
51
+ def env_with_params(path = "/", params = {}, env = {})
52
+ method = params.delete(:method) || "GET"
53
+ env = { 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => "#{method}" }.merge(env)
54
+ Rack::MockRequest.env_for("#{path}?#{Rack::Utils.build_query(params)}", env)
55
+ end
56
+
57
+ def valid_response
58
+ Rack::Response.new("OK").finish
59
+ end
60
+
61
+
62
+ class SessionHelper
63
+ attr_accessor :app
64
+ def initialize(app,configs = {})
65
+ @app = app
66
+ end
67
+
68
+ def call(e)
69
+ e['rack.session'] ||= {}
70
+ @app.call(e)
71
+ end
72
+ end
73
+ end
74
+
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe WardenWatch::Model do
4
+ class User < ActiveRecord::Base
5
+ self.table_name = 'users'
6
+
7
+ include WardenWatch::Model
8
+ end
9
+
10
+ subject { User.new }
11
+
12
+ it { should have_many :visits }
13
+
14
+ it 'logs a visit record' do
15
+ user = User.new
16
+ track_visit(user, mock_request('/'), {})
17
+ user.visits.count.should eql(1)
18
+ end
19
+
20
+ it 'logs the ip address' do
21
+ user = User.new
22
+ env = mock_request('/')
23
+ env['REMOTE_ADDR'] = '127.0.0.1'
24
+ track_visit(user, env, {})
25
+ user.visits.first.ip_address.should_not be_nil
26
+ end
27
+
28
+ protected
29
+ def mock_request(path)
30
+ Rack::MockRequest.env_for("/")
31
+ end
32
+
33
+ def track_visit(user, env, opts)
34
+ user.save!
35
+ auth = mock(:env => env)
36
+ user.track_visit!(auth, opts)
37
+ end
38
+ end
39
+
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'warden_watch/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'warden_watch'
8
+ gem.version = WardenWatch::VERSION
9
+ gem.authors = ["Dan Pickett", 'Jason Zopf']
10
+ gem.email = ['dan.pickett@launchware.com']
11
+ gem.description = %q{tracks user logins with warden}
12
+ gem.summary = %q{tracks user logins with warden}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'warden'
21
+ gem.add_dependency 'railties', '~> 3.0'
22
+ gem.add_dependency 'activerecord', '~> 3.0'
23
+
24
+ gem.add_development_dependency 'rake'
25
+ gem.add_development_dependency 'rspec-rails'
26
+ gem.add_development_dependency 'mocha'
27
+ gem.add_development_dependency 'bourne'
28
+ gem.add_development_dependency 'fuubar'
29
+ gem.add_development_dependency 'rack-test'
30
+ gem.add_development_dependency 'guard-rspec'
31
+ gem.add_development_dependency 'rails'
32
+ gem.add_development_dependency 'shoulda'
33
+ gem.add_development_dependency 'sqlite3'
34
+ end
35
+
metadata ADDED
@@ -0,0 +1,358 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: warden_watch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dan Pickett
9
+ - Jason Zopf
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-02-15 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: warden
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: railties
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: '3.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: activerecord
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '3.0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rake
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec-rails
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: mocha
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: bourne
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: fuubar
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: rack-test
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: guard-rspec
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: rails
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ - !ruby/object:Gem::Dependency
192
+ name: shoulda
193
+ requirement: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ type: :development
200
+ prerelease: false
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: sqlite3
209
+ requirement: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description: tracks user logins with warden
224
+ email:
225
+ - dan.pickett@launchware.com
226
+ executables: []
227
+ extensions: []
228
+ extra_rdoc_files: []
229
+ files:
230
+ - .gitignore
231
+ - .rspec
232
+ - .rvmrc
233
+ - Gemfile
234
+ - LICENSE.txt
235
+ - README.md
236
+ - Rakefile
237
+ - app/models/warden_watch/user_visit.rb
238
+ - db/migrate/20130214010145_create_warden_watch_user_visits.rb
239
+ - lib/tasks/warden_watch_tasks.rake
240
+ - lib/warden_watch.rb
241
+ - lib/warden_watch/authentication_event.rb
242
+ - lib/warden_watch/engine.rb
243
+ - lib/warden_watch/hook.rb
244
+ - lib/warden_watch/model.rb
245
+ - lib/warden_watch/version.rb
246
+ - script/rails
247
+ - spec/dummy/README.rdoc
248
+ - spec/dummy/Rakefile
249
+ - spec/dummy/app/assets/javascripts/application.js
250
+ - spec/dummy/app/assets/stylesheets/application.css
251
+ - spec/dummy/app/controllers/application_controller.rb
252
+ - spec/dummy/app/helpers/application_helper.rb
253
+ - spec/dummy/app/mailers/.gitkeep
254
+ - spec/dummy/app/models/.gitkeep
255
+ - spec/dummy/app/views/layouts/application.html.erb
256
+ - spec/dummy/config.ru
257
+ - spec/dummy/config/application.rb
258
+ - spec/dummy/config/boot.rb
259
+ - spec/dummy/config/database.yml
260
+ - spec/dummy/config/environment.rb
261
+ - spec/dummy/config/environments/development.rb
262
+ - spec/dummy/config/environments/production.rb
263
+ - spec/dummy/config/environments/test.rb
264
+ - spec/dummy/config/initializers/backtrace_silencers.rb
265
+ - spec/dummy/config/initializers/inflections.rb
266
+ - spec/dummy/config/initializers/mime_types.rb
267
+ - spec/dummy/config/initializers/secret_token.rb
268
+ - spec/dummy/config/initializers/session_store.rb
269
+ - spec/dummy/config/initializers/wrap_parameters.rb
270
+ - spec/dummy/config/locales/en.yml
271
+ - spec/dummy/config/routes.rb
272
+ - spec/dummy/db/migrate/20130214014453_create_users.rb
273
+ - spec/dummy/db/migrate/20130214014754_create_warden_watch_user_visits.warden_watch.rb
274
+ - spec/dummy/db/schema.rb
275
+ - spec/dummy/lib/assets/.gitkeep
276
+ - spec/dummy/log/.gitkeep
277
+ - spec/dummy/public/404.html
278
+ - spec/dummy/public/422.html
279
+ - spec/dummy/public/500.html
280
+ - spec/dummy/public/favicon.ico
281
+ - spec/dummy/script/rails
282
+ - spec/models/warden_watch/user_visit_spec.rb
283
+ - spec/spec_helper.rb
284
+ - spec/warden_watch/authentication_event_spec.rb
285
+ - spec/warden_watch/hook_spec.rb
286
+ - spec/warden_watch/model_spec.rb
287
+ - warden_watch.gemspec
288
+ homepage: ''
289
+ licenses: []
290
+ post_install_message:
291
+ rdoc_options: []
292
+ require_paths:
293
+ - lib
294
+ required_ruby_version: !ruby/object:Gem::Requirement
295
+ none: false
296
+ requirements:
297
+ - - ! '>='
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ segments:
301
+ - 0
302
+ hash: -4009172776532392641
303
+ required_rubygems_version: !ruby/object:Gem::Requirement
304
+ none: false
305
+ requirements:
306
+ - - ! '>='
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ segments:
310
+ - 0
311
+ hash: -4009172776532392641
312
+ requirements: []
313
+ rubyforge_project:
314
+ rubygems_version: 1.8.24
315
+ signing_key:
316
+ specification_version: 3
317
+ summary: tracks user logins with warden
318
+ test_files:
319
+ - spec/dummy/README.rdoc
320
+ - spec/dummy/Rakefile
321
+ - spec/dummy/app/assets/javascripts/application.js
322
+ - spec/dummy/app/assets/stylesheets/application.css
323
+ - spec/dummy/app/controllers/application_controller.rb
324
+ - spec/dummy/app/helpers/application_helper.rb
325
+ - spec/dummy/app/mailers/.gitkeep
326
+ - spec/dummy/app/models/.gitkeep
327
+ - spec/dummy/app/views/layouts/application.html.erb
328
+ - spec/dummy/config.ru
329
+ - spec/dummy/config/application.rb
330
+ - spec/dummy/config/boot.rb
331
+ - spec/dummy/config/database.yml
332
+ - spec/dummy/config/environment.rb
333
+ - spec/dummy/config/environments/development.rb
334
+ - spec/dummy/config/environments/production.rb
335
+ - spec/dummy/config/environments/test.rb
336
+ - spec/dummy/config/initializers/backtrace_silencers.rb
337
+ - spec/dummy/config/initializers/inflections.rb
338
+ - spec/dummy/config/initializers/mime_types.rb
339
+ - spec/dummy/config/initializers/secret_token.rb
340
+ - spec/dummy/config/initializers/session_store.rb
341
+ - spec/dummy/config/initializers/wrap_parameters.rb
342
+ - spec/dummy/config/locales/en.yml
343
+ - spec/dummy/config/routes.rb
344
+ - spec/dummy/db/migrate/20130214014453_create_users.rb
345
+ - spec/dummy/db/migrate/20130214014754_create_warden_watch_user_visits.warden_watch.rb
346
+ - spec/dummy/db/schema.rb
347
+ - spec/dummy/lib/assets/.gitkeep
348
+ - spec/dummy/log/.gitkeep
349
+ - spec/dummy/public/404.html
350
+ - spec/dummy/public/422.html
351
+ - spec/dummy/public/500.html
352
+ - spec/dummy/public/favicon.ico
353
+ - spec/dummy/script/rails
354
+ - spec/models/warden_watch/user_visit_spec.rb
355
+ - spec/spec_helper.rb
356
+ - spec/warden_watch/authentication_event_spec.rb
357
+ - spec/warden_watch/hook_spec.rb
358
+ - spec/warden_watch/model_spec.rb