door_mat 0.0.5

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 (176) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +3 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +88 -0
  6. data/Rakefile +32 -0
  7. data/app/assets/javascripts/door_mat/application.js +13 -0
  8. data/app/assets/stylesheets/door_mat/application.css +15 -0
  9. data/app/assets/stylesheets/scaffold.css +56 -0
  10. data/app/controllers/door_mat/activities_controller.rb +106 -0
  11. data/app/controllers/door_mat/application_controller.rb +14 -0
  12. data/app/controllers/door_mat/change_password_controller.rb +32 -0
  13. data/app/controllers/door_mat/forgot_passwords_controller.rb +57 -0
  14. data/app/controllers/door_mat/manage_email_controller.rb +61 -0
  15. data/app/controllers/door_mat/password_less_session_controller.rb +121 -0
  16. data/app/controllers/door_mat/reconfirm_password_controller.rb +27 -0
  17. data/app/controllers/door_mat/sessions_controller.rb +17 -0
  18. data/app/controllers/door_mat/sign_in_controller.rb +60 -0
  19. data/app/controllers/door_mat/sign_up_controller.rb +59 -0
  20. data/app/controllers/door_mat/static_controller.rb +5 -0
  21. data/app/mailers/door_mat/activity_mailer.rb +18 -0
  22. data/app/mailers/door_mat/password_less_session_mailer.rb +12 -0
  23. data/app/models/door_mat/access_token.rb +315 -0
  24. data/app/models/door_mat/activity.rb +14 -0
  25. data/app/models/door_mat/activity_confirm_email.rb +45 -0
  26. data/app/models/door_mat/activity_download_recovery_key.rb +30 -0
  27. data/app/models/door_mat/activity_reset_password.rb +47 -0
  28. data/app/models/door_mat/actor.rb +149 -0
  29. data/app/models/door_mat/change_password.rb +12 -0
  30. data/app/models/door_mat/email.rb +58 -0
  31. data/app/models/door_mat/forgot_password.rb +12 -0
  32. data/app/models/door_mat/membership.rb +42 -0
  33. data/app/models/door_mat/session.rb +315 -0
  34. data/app/models/door_mat/sign_in.rb +31 -0
  35. data/app/models/door_mat/sign_up.rb +17 -0
  36. data/app/views/door_mat/activity_mailer/confirm_email.html.erb +11 -0
  37. data/app/views/door_mat/activity_mailer/confirm_email.text.erb +7 -0
  38. data/app/views/door_mat/activity_mailer/reset_password.html.erb +11 -0
  39. data/app/views/door_mat/activity_mailer/reset_password.text.erb +7 -0
  40. data/app/views/door_mat/change_password/new.html.erb +22 -0
  41. data/app/views/door_mat/forgot_passwords/choose_new_password.html.erb +34 -0
  42. data/app/views/door_mat/forgot_passwords/new.html.erb +14 -0
  43. data/app/views/door_mat/helpers/_errors_if_any.html.erb +10 -0
  44. data/app/views/door_mat/manage_email/new.html.erb +14 -0
  45. data/app/views/door_mat/password_less_session/access_token.html.erb +16 -0
  46. data/app/views/door_mat/password_less_session/new.html.erb +34 -0
  47. data/app/views/door_mat/password_less_session_mailer/send_token.html.erb +11 -0
  48. data/app/views/door_mat/password_less_session_mailer/send_token.text.erb +7 -0
  49. data/app/views/door_mat/reconfirm_password/new.html.erb +12 -0
  50. data/app/views/door_mat/sign_in/new.html.erb +30 -0
  51. data/app/views/door_mat/sign_up/new.html.erb +24 -0
  52. data/app/views/door_mat/static/add_email_success.html.erb +5 -0
  53. data/app/views/door_mat/static/change_password_success.html.erb +2 -0
  54. data/app/views/door_mat/static/confirm_email_success.html.erb +2 -0
  55. data/app/views/door_mat/static/email_confirmation_required.html.erb +17 -0
  56. data/app/views/door_mat/static/forgot_password_verification_mail_sent.html.erb +2 -0
  57. data/app/views/door_mat/static/reconfirm_password_success.html.erb +4 -0
  58. data/app/views/door_mat/static/sign_in_success.html.erb +5 -0
  59. data/app/views/door_mat/static/sign_out_success.html.erb +5 -0
  60. data/app/views/door_mat/static/sign_up_success.html.erb +4 -0
  61. data/bin/rails +12 -0
  62. data/config/locales/en.yml +73 -0
  63. data/config/routes.rb +48 -0
  64. data/db/migrate/20140616234935_create_door_mat_actors.rb +23 -0
  65. data/db/migrate/20140617233357_create_door_mat_sessions.rb +17 -0
  66. data/db/migrate/20140630043202_create_door_mat_emails.rb +12 -0
  67. data/db/migrate/20140702045729_create_door_mat_activities.rb +14 -0
  68. data/db/migrate/20141115183045_create_door_mat_access_tokens.rb +17 -0
  69. data/db/migrate/20141121191824_create_door_mat_memberships.rb +14 -0
  70. data/db/migrate/20150910182126_rename_session_guid_column.rb +5 -0
  71. data/db/migrate/20150918210831_add_access_token_rating_column.rb +5 -0
  72. data/door_mat.gemspec +37 -0
  73. data/lib/door_mat.rb +20 -0
  74. data/lib/door_mat/attr_asymmetric_store.rb +82 -0
  75. data/lib/door_mat/attr_symmetric_store.rb +82 -0
  76. data/lib/door_mat/configuration.rb +193 -0
  77. data/lib/door_mat/controller.rb +117 -0
  78. data/lib/door_mat/crypto.rb +49 -0
  79. data/lib/door_mat/crypto/asymmetric_store.rb +77 -0
  80. data/lib/door_mat/crypto/fast_hash.rb +17 -0
  81. data/lib/door_mat/crypto/password_hash.rb +39 -0
  82. data/lib/door_mat/crypto/secure_compare.rb +23 -0
  83. data/lib/door_mat/crypto/symmetric_store.rb +68 -0
  84. data/lib/door_mat/engine.rb +23 -0
  85. data/lib/door_mat/process/actor_password_change.rb +65 -0
  86. data/lib/door_mat/process/actor_sign_in.rb +38 -0
  87. data/lib/door_mat/process/actor_sign_up.rb +39 -0
  88. data/lib/door_mat/process/create_new_anonymous_actor.rb +36 -0
  89. data/lib/door_mat/process/manage_email.rb +42 -0
  90. data/lib/door_mat/process/reset_password.rb +50 -0
  91. data/lib/door_mat/regex.rb +17 -0
  92. data/lib/door_mat/test_helper.rb +58 -0
  93. data/lib/door_mat/url_protocol.rb +9 -0
  94. data/lib/door_mat/version.rb +3 -0
  95. data/lib/tasks/door_mat_tasks.rake +31 -0
  96. data/spec/controllers/door_mat/activities_controller_spec.rb +70 -0
  97. data/spec/controllers/door_mat/forgot_passwords_controller_spec.rb +57 -0
  98. data/spec/controllers/door_mat/manage_email_spec.rb +181 -0
  99. data/spec/controllers/door_mat/password_less_session_controller_spec.rb +344 -0
  100. data/spec/controllers/door_mat/sign_in_controller_spec.rb +211 -0
  101. data/spec/controllers/door_mat/sign_up_controller_spec.rb +90 -0
  102. data/spec/factories/door_mat_access_tokens.rb +6 -0
  103. data/spec/factories/door_mat_activitiess.rb +6 -0
  104. data/spec/factories/door_mat_actors.rb +23 -0
  105. data/spec/factories/door_mat_emails.rb +14 -0
  106. data/spec/factories/door_mat_memberships.rb +6 -0
  107. data/spec/factories/door_mat_sessions.rb +24 -0
  108. data/spec/features/password_less_session_spec.rb +165 -0
  109. data/spec/features/remember_me_spec.rb +672 -0
  110. data/spec/features/session_spec.rb +336 -0
  111. data/spec/lib/attr_store_spec.rb +237 -0
  112. data/spec/lib/crypto_spec.rb +130 -0
  113. data/spec/lib/process_spec.rb +159 -0
  114. data/spec/models/door_mat/access_token_spec.rb +134 -0
  115. data/spec/models/door_mat/activity_spec.rb +38 -0
  116. data/spec/models/door_mat/actor_spec.rb +56 -0
  117. data/spec/models/door_mat/email_spec.rb +25 -0
  118. data/spec/models/door_mat/session_spec.rb +69 -0
  119. data/spec/spec_helper.rb +223 -0
  120. data/spec/support/timecop/timecop_helper.rb +52 -0
  121. data/spec/test_app/README.rdoc +28 -0
  122. data/spec/test_app/Rakefile +6 -0
  123. data/spec/test_app/app/assets/javascripts/application.js +13 -0
  124. data/spec/test_app/app/assets/stylesheets/application.css +15 -0
  125. data/spec/test_app/app/controllers/account_controller.rb +28 -0
  126. data/spec/test_app/app/controllers/application_controller.rb +10 -0
  127. data/spec/test_app/app/controllers/password_less_sample_controller.rb +56 -0
  128. data/spec/test_app/app/controllers/static_controller.rb +7 -0
  129. data/spec/test_app/app/helpers/account_helper.rb +2 -0
  130. data/spec/test_app/app/helpers/application_helper.rb +2 -0
  131. data/spec/test_app/app/models/game.rb +62 -0
  132. data/spec/test_app/app/models/shared_data.rb +4 -0
  133. data/spec/test_app/app/models/shared_key.rb +8 -0
  134. data/spec/test_app/app/models/user_detail.rb +7 -0
  135. data/spec/test_app/app/views/account/show.html.erb +133 -0
  136. data/spec/test_app/app/views/door_mat/static/sign_out_success.html.erb +7 -0
  137. data/spec/test_app/app/views/layouts/application.html.erb +20 -0
  138. data/spec/test_app/app/views/password_less_sample/draw_results.html.erb +6 -0
  139. data/spec/test_app/app/views/password_less_sample/final_result.html.erb +7 -0
  140. data/spec/test_app/app/views/password_less_sample/play_game.html.erb +5 -0
  141. data/spec/test_app/app/views/password_less_sample/show_loosing_door.html.erb +10 -0
  142. data/spec/test_app/app/views/static/index.html.erb +12 -0
  143. data/spec/test_app/app/views/static/only_confirmed_email_allowed.html.erb +10 -0
  144. data/spec/test_app/app/views/static/page_that_require_password_reconfirmation.html.erb +16 -0
  145. data/spec/test_app/app/views/static/session_protected_page.html.erb +32 -0
  146. data/spec/test_app/bin/bundle +3 -0
  147. data/spec/test_app/bin/rails +4 -0
  148. data/spec/test_app/bin/rake +4 -0
  149. data/spec/test_app/config.ru +4 -0
  150. data/spec/test_app/config/application.rb +29 -0
  151. data/spec/test_app/config/boot.rb +5 -0
  152. data/spec/test_app/config/database.yml +25 -0
  153. data/spec/test_app/config/environment.rb +19 -0
  154. data/spec/test_app/config/environments/development.rb +50 -0
  155. data/spec/test_app/config/environments/production.rb +83 -0
  156. data/spec/test_app/config/environments/test.rb +48 -0
  157. data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
  158. data/spec/test_app/config/initializers/cookies_serializer.rb +3 -0
  159. data/spec/test_app/config/initializers/door_mat.rb +72 -0
  160. data/spec/test_app/config/initializers/filter_parameter_logging.rb +4 -0
  161. data/spec/test_app/config/initializers/inflections.rb +16 -0
  162. data/spec/test_app/config/initializers/mime_types.rb +4 -0
  163. data/spec/test_app/config/initializers/session_store.rb +3 -0
  164. data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
  165. data/spec/test_app/config/locales/en.yml +23 -0
  166. data/spec/test_app/config/routes.rb +42 -0
  167. data/spec/test_app/config/secrets.yml +31 -0
  168. data/spec/test_app/db/migrate/20140717182813_create_user_details.rb +10 -0
  169. data/spec/test_app/db/migrate/20140908225256_create_shared_data.rb +10 -0
  170. data/spec/test_app/db/migrate/20140908225604_create_shared_keys.rb +11 -0
  171. data/spec/test_app/db/migrate/20141121190714_create_games.rb +10 -0
  172. data/spec/test_app/public/404.html +67 -0
  173. data/spec/test_app/public/422.html +67 -0
  174. data/spec/test_app/public/500.html +66 -0
  175. data/spec/test_app/public/favicon.ico +0 -0
  176. metadata +552 -0
@@ -0,0 +1,16 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format. Inflections
4
+ # are locale specific, and you may define rules for as many different
5
+ # locales as you wish. All of these examples are active by default:
6
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
+ # inflect.plural /^(ox)$/i, '\1en'
8
+ # inflect.singular /^(ox)en/i, '\1'
9
+ # inflect.irregular 'person', 'people'
10
+ # inflect.uncountable %w( fish sheep )
11
+ # end
12
+
13
+ # These inflection rules are supported but not enabled by default:
14
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
+ # inflect.acronym 'RESTful'
16
+ # end
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.session_store :cookie_store, key: '_test_app_session'
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
+ end
10
+
11
+ # To enable root element in JSON for ActiveRecord objects.
12
+ # ActiveSupport.on_load(:active_record) do
13
+ # self.include_root_in_json = true
14
+ # end
@@ -0,0 +1,23 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ en:
23
+ hello: "Hello world"
@@ -0,0 +1,42 @@
1
+ Rails.application.routes.draw do
2
+
3
+ get '/account/show' => 'account#show', as: 'account_show'
4
+ patch '/account/update' => 'account#update'
5
+ post '/account/update' => 'account#update'
6
+
7
+ get '/session_protected_page' => 'static#session_protected_page', as: 'session_protected_page'
8
+ get '/page_that_require_password_reconfirmation' => 'static#page_that_require_password_reconfirmation', as: 'page_that_require_password_reconfirmation'
9
+ get '/only_confirmed_email_allowed' => 'static#only_confirmed_email_allowed', as: 'only_confirmed_email_allowed'
10
+
11
+
12
+ # Password less session :big_ticket
13
+ get '/draw_results' => 'password_less_sample#draw_results'
14
+ # setup a game w 10 doors, randomly assign a winning door, linked to the current password less session and owned by anonymous actor
15
+ # the player then choose one of the doors
16
+ get '/play_game' => 'password_less_sample#play_game'
17
+ # Record the player's choice and swap ticket to prevent user from going back to the previous step
18
+ post '/choose_door' => 'password_less_sample#choose_door_post'
19
+
20
+ # Password less session :play_game
21
+ # Host open a loosing door and player has last opportunity to change door selection
22
+ get '/show_loosing_door' => 'password_less_sample#show_loosing_door'
23
+ # ticket swap
24
+ post '/final_choice' => 'password_less_sample#final_choice_post'
25
+
26
+ # Password less session :show_loosing_door
27
+ get '/final_result' => 'password_less_sample#final_result'
28
+
29
+
30
+ mount DoorMat::Engine => "/", as: "door_mat"
31
+
32
+ # Anybody can get a ticket here to play the game
33
+ get '/big_ticket' => 'door_mat/password_less_session#new', defaults: { token_for: :big_ticket }
34
+ post '/big_ticket' => 'door_mat/password_less_session#create', defaults: { token_for: :big_ticket }
35
+
36
+ # But only Leeloo can get a multipass
37
+ get '/multipass' => 'door_mat/password_less_session#new', defaults: { token_for: :multipass }
38
+ post '/multipass' => 'door_mat/password_less_session#create', defaults: { token_for: :multipass }
39
+
40
+ root 'static#index'
41
+
42
+ end
@@ -0,0 +1,31 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: f3f82aa5e39ed07166be26200d100c3f2cdec0a6ac41fbbf731b2ee83a97da84f7220181840e40c1310bfcbb5b7e791073f86f27b68204cec16739f444613a5b
15
+ admin_account_email: door_mat.admin@example.com
16
+ admin_account_pwd: ngiwuhw3kwij
17
+ mailer_address: noreply@example.com
18
+
19
+ test:
20
+ secret_key_base: c882d0e7494f77d205f2b0e2df50423b030f28bac1c70dbe2dfd1b2da71c1bc6cd100d1ece99fd6746f8d260c9cceb9cbcc712f118ec84d5d6d2e024ea3408e0
21
+ admin_account_email: door_mat.admin@example.com
22
+ admin_account_pwd: fjjegc7829hdn
23
+ mailer_address: noreply@example.com
24
+
25
+ # Do not keep production secrets in the repository,
26
+ # instead read values from the environment.
27
+ production:
28
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
29
+ admin_account_email: <%= ENV["ADMIN_ACCOUNT_EMAIL"] %>
30
+ admin_account_pwd: <%= ENV["ADMIN_ACCOUNT_PWD"] %>
31
+ mailer_address: <%= ENV["MAILER_EMAIL_ADDRESS"] %>
@@ -0,0 +1,10 @@
1
+ class CreateUserDetails < ActiveRecord::Migration
2
+ def change
3
+ create_table :user_details do |t|
4
+ t.belongs_to :actor, index: true
5
+ t.text :name, :default => '', :null => false
6
+
7
+ t.timestamps :null => false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ class CreateSharedData < ActiveRecord::Migration
2
+ def change
3
+ create_table :shared_data do |t|
4
+ t.text :document, :default => '', :null => false
5
+ t.text :expiration_date, :default => '', :null => false
6
+
7
+ t.timestamps :null => false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ class CreateSharedKeys < ActiveRecord::Migration
2
+ def change
3
+ create_table :shared_keys do |t|
4
+ t.belongs_to :actor, index: true
5
+ t.belongs_to :shared_data, index: true
6
+ t.text :key, :default => '', :null => false
7
+
8
+ t.timestamps :null => false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ class CreateGames < ActiveRecord::Migration
2
+ def change
3
+ create_table :games do |t|
4
+ t.belongs_to :actor, index: true
5
+ t.text :state, :default => '', :null => false
6
+
7
+ t.timestamps :null => false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
metadata ADDED
@@ -0,0 +1,552 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: door_mat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Luc Lussier
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bcrypt
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: request_store
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sprockets
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.12.4
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 2.12.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: database_cleaner
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 3.4.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 3.4.2
111
+ - !ruby/object:Gem::Dependency
112
+ name: factory_girl_rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 4.4.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 4.4.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: email_spec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: capybara
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: show_me_the_cookies
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: poltergeist
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: selenium-webdriver
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: byebug
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: timecop
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: better_errors
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: binding_of_caller
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: simplecov
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ description: DoorMat is a Rails Engine that provides a solution for both user authentication
266
+ and the encryption of user information. It aims to offer safe defaults so you can
267
+ get going with what your website is really about.
268
+ email:
269
+ - luc.lussier@gmail.com
270
+ executables: []
271
+ extensions: []
272
+ extra_rdoc_files: []
273
+ files:
274
+ - ".rspec"
275
+ - Gemfile
276
+ - MIT-LICENSE
277
+ - README.md
278
+ - Rakefile
279
+ - app/assets/javascripts/door_mat/application.js
280
+ - app/assets/stylesheets/door_mat/application.css
281
+ - app/assets/stylesheets/scaffold.css
282
+ - app/controllers/door_mat/activities_controller.rb
283
+ - app/controllers/door_mat/application_controller.rb
284
+ - app/controllers/door_mat/change_password_controller.rb
285
+ - app/controllers/door_mat/forgot_passwords_controller.rb
286
+ - app/controllers/door_mat/manage_email_controller.rb
287
+ - app/controllers/door_mat/password_less_session_controller.rb
288
+ - app/controllers/door_mat/reconfirm_password_controller.rb
289
+ - app/controllers/door_mat/sessions_controller.rb
290
+ - app/controllers/door_mat/sign_in_controller.rb
291
+ - app/controllers/door_mat/sign_up_controller.rb
292
+ - app/controllers/door_mat/static_controller.rb
293
+ - app/mailers/door_mat/activity_mailer.rb
294
+ - app/mailers/door_mat/password_less_session_mailer.rb
295
+ - app/models/door_mat/access_token.rb
296
+ - app/models/door_mat/activity.rb
297
+ - app/models/door_mat/activity_confirm_email.rb
298
+ - app/models/door_mat/activity_download_recovery_key.rb
299
+ - app/models/door_mat/activity_reset_password.rb
300
+ - app/models/door_mat/actor.rb
301
+ - app/models/door_mat/change_password.rb
302
+ - app/models/door_mat/email.rb
303
+ - app/models/door_mat/forgot_password.rb
304
+ - app/models/door_mat/membership.rb
305
+ - app/models/door_mat/session.rb
306
+ - app/models/door_mat/sign_in.rb
307
+ - app/models/door_mat/sign_up.rb
308
+ - app/views/door_mat/activity_mailer/confirm_email.html.erb
309
+ - app/views/door_mat/activity_mailer/confirm_email.text.erb
310
+ - app/views/door_mat/activity_mailer/reset_password.html.erb
311
+ - app/views/door_mat/activity_mailer/reset_password.text.erb
312
+ - app/views/door_mat/change_password/new.html.erb
313
+ - app/views/door_mat/forgot_passwords/choose_new_password.html.erb
314
+ - app/views/door_mat/forgot_passwords/new.html.erb
315
+ - app/views/door_mat/helpers/_errors_if_any.html.erb
316
+ - app/views/door_mat/manage_email/new.html.erb
317
+ - app/views/door_mat/password_less_session/access_token.html.erb
318
+ - app/views/door_mat/password_less_session/new.html.erb
319
+ - app/views/door_mat/password_less_session_mailer/send_token.html.erb
320
+ - app/views/door_mat/password_less_session_mailer/send_token.text.erb
321
+ - app/views/door_mat/reconfirm_password/new.html.erb
322
+ - app/views/door_mat/sign_in/new.html.erb
323
+ - app/views/door_mat/sign_up/new.html.erb
324
+ - app/views/door_mat/static/add_email_success.html.erb
325
+ - app/views/door_mat/static/change_password_success.html.erb
326
+ - app/views/door_mat/static/confirm_email_success.html.erb
327
+ - app/views/door_mat/static/email_confirmation_required.html.erb
328
+ - app/views/door_mat/static/forgot_password_verification_mail_sent.html.erb
329
+ - app/views/door_mat/static/reconfirm_password_success.html.erb
330
+ - app/views/door_mat/static/sign_in_success.html.erb
331
+ - app/views/door_mat/static/sign_out_success.html.erb
332
+ - app/views/door_mat/static/sign_up_success.html.erb
333
+ - bin/rails
334
+ - config/locales/en.yml
335
+ - config/routes.rb
336
+ - db/migrate/20140616234935_create_door_mat_actors.rb
337
+ - db/migrate/20140617233357_create_door_mat_sessions.rb
338
+ - db/migrate/20140630043202_create_door_mat_emails.rb
339
+ - db/migrate/20140702045729_create_door_mat_activities.rb
340
+ - db/migrate/20141115183045_create_door_mat_access_tokens.rb
341
+ - db/migrate/20141121191824_create_door_mat_memberships.rb
342
+ - db/migrate/20150910182126_rename_session_guid_column.rb
343
+ - db/migrate/20150918210831_add_access_token_rating_column.rb
344
+ - door_mat.gemspec
345
+ - lib/door_mat.rb
346
+ - lib/door_mat/attr_asymmetric_store.rb
347
+ - lib/door_mat/attr_symmetric_store.rb
348
+ - lib/door_mat/configuration.rb
349
+ - lib/door_mat/controller.rb
350
+ - lib/door_mat/crypto.rb
351
+ - lib/door_mat/crypto/asymmetric_store.rb
352
+ - lib/door_mat/crypto/fast_hash.rb
353
+ - lib/door_mat/crypto/password_hash.rb
354
+ - lib/door_mat/crypto/secure_compare.rb
355
+ - lib/door_mat/crypto/symmetric_store.rb
356
+ - lib/door_mat/engine.rb
357
+ - lib/door_mat/process/actor_password_change.rb
358
+ - lib/door_mat/process/actor_sign_in.rb
359
+ - lib/door_mat/process/actor_sign_up.rb
360
+ - lib/door_mat/process/create_new_anonymous_actor.rb
361
+ - lib/door_mat/process/manage_email.rb
362
+ - lib/door_mat/process/reset_password.rb
363
+ - lib/door_mat/regex.rb
364
+ - lib/door_mat/test_helper.rb
365
+ - lib/door_mat/url_protocol.rb
366
+ - lib/door_mat/version.rb
367
+ - lib/tasks/door_mat_tasks.rake
368
+ - spec/controllers/door_mat/activities_controller_spec.rb
369
+ - spec/controllers/door_mat/forgot_passwords_controller_spec.rb
370
+ - spec/controllers/door_mat/manage_email_spec.rb
371
+ - spec/controllers/door_mat/password_less_session_controller_spec.rb
372
+ - spec/controllers/door_mat/sign_in_controller_spec.rb
373
+ - spec/controllers/door_mat/sign_up_controller_spec.rb
374
+ - spec/factories/door_mat_access_tokens.rb
375
+ - spec/factories/door_mat_activitiess.rb
376
+ - spec/factories/door_mat_actors.rb
377
+ - spec/factories/door_mat_emails.rb
378
+ - spec/factories/door_mat_memberships.rb
379
+ - spec/factories/door_mat_sessions.rb
380
+ - spec/features/password_less_session_spec.rb
381
+ - spec/features/remember_me_spec.rb
382
+ - spec/features/session_spec.rb
383
+ - spec/lib/attr_store_spec.rb
384
+ - spec/lib/crypto_spec.rb
385
+ - spec/lib/process_spec.rb
386
+ - spec/models/door_mat/access_token_spec.rb
387
+ - spec/models/door_mat/activity_spec.rb
388
+ - spec/models/door_mat/actor_spec.rb
389
+ - spec/models/door_mat/email_spec.rb
390
+ - spec/models/door_mat/session_spec.rb
391
+ - spec/spec_helper.rb
392
+ - spec/support/timecop/timecop_helper.rb
393
+ - spec/test_app/README.rdoc
394
+ - spec/test_app/Rakefile
395
+ - spec/test_app/app/assets/javascripts/application.js
396
+ - spec/test_app/app/assets/stylesheets/application.css
397
+ - spec/test_app/app/controllers/account_controller.rb
398
+ - spec/test_app/app/controllers/application_controller.rb
399
+ - spec/test_app/app/controllers/password_less_sample_controller.rb
400
+ - spec/test_app/app/controllers/static_controller.rb
401
+ - spec/test_app/app/helpers/account_helper.rb
402
+ - spec/test_app/app/helpers/application_helper.rb
403
+ - spec/test_app/app/models/game.rb
404
+ - spec/test_app/app/models/shared_data.rb
405
+ - spec/test_app/app/models/shared_key.rb
406
+ - spec/test_app/app/models/user_detail.rb
407
+ - spec/test_app/app/views/account/show.html.erb
408
+ - spec/test_app/app/views/door_mat/static/sign_out_success.html.erb
409
+ - spec/test_app/app/views/layouts/application.html.erb
410
+ - spec/test_app/app/views/password_less_sample/draw_results.html.erb
411
+ - spec/test_app/app/views/password_less_sample/final_result.html.erb
412
+ - spec/test_app/app/views/password_less_sample/play_game.html.erb
413
+ - spec/test_app/app/views/password_less_sample/show_loosing_door.html.erb
414
+ - spec/test_app/app/views/static/index.html.erb
415
+ - spec/test_app/app/views/static/only_confirmed_email_allowed.html.erb
416
+ - spec/test_app/app/views/static/page_that_require_password_reconfirmation.html.erb
417
+ - spec/test_app/app/views/static/session_protected_page.html.erb
418
+ - spec/test_app/bin/bundle
419
+ - spec/test_app/bin/rails
420
+ - spec/test_app/bin/rake
421
+ - spec/test_app/config.ru
422
+ - spec/test_app/config/application.rb
423
+ - spec/test_app/config/boot.rb
424
+ - spec/test_app/config/database.yml
425
+ - spec/test_app/config/environment.rb
426
+ - spec/test_app/config/environments/development.rb
427
+ - spec/test_app/config/environments/production.rb
428
+ - spec/test_app/config/environments/test.rb
429
+ - spec/test_app/config/initializers/backtrace_silencers.rb
430
+ - spec/test_app/config/initializers/cookies_serializer.rb
431
+ - spec/test_app/config/initializers/door_mat.rb
432
+ - spec/test_app/config/initializers/filter_parameter_logging.rb
433
+ - spec/test_app/config/initializers/inflections.rb
434
+ - spec/test_app/config/initializers/mime_types.rb
435
+ - spec/test_app/config/initializers/session_store.rb
436
+ - spec/test_app/config/initializers/wrap_parameters.rb
437
+ - spec/test_app/config/locales/en.yml
438
+ - spec/test_app/config/routes.rb
439
+ - spec/test_app/config/secrets.yml
440
+ - spec/test_app/db/migrate/20140717182813_create_user_details.rb
441
+ - spec/test_app/db/migrate/20140908225256_create_shared_data.rb
442
+ - spec/test_app/db/migrate/20140908225604_create_shared_keys.rb
443
+ - spec/test_app/db/migrate/20141121190714_create_games.rb
444
+ - spec/test_app/public/404.html
445
+ - spec/test_app/public/422.html
446
+ - spec/test_app/public/500.html
447
+ - spec/test_app/public/favicon.ico
448
+ homepage: https://github.com/datamolecule/door_mat
449
+ licenses:
450
+ - MIT
451
+ metadata: {}
452
+ post_install_message:
453
+ rdoc_options: []
454
+ require_paths:
455
+ - lib
456
+ required_ruby_version: !ruby/object:Gem::Requirement
457
+ requirements:
458
+ - - ">="
459
+ - !ruby/object:Gem::Version
460
+ version: '0'
461
+ required_rubygems_version: !ruby/object:Gem::Requirement
462
+ requirements:
463
+ - - ">="
464
+ - !ruby/object:Gem::Version
465
+ version: '0'
466
+ requirements: []
467
+ rubyforge_project:
468
+ rubygems_version: 2.4.5.1
469
+ signing_key:
470
+ specification_version: 4
471
+ summary: User authentication and data encryption
472
+ test_files:
473
+ - spec/controllers/door_mat/activities_controller_spec.rb
474
+ - spec/controllers/door_mat/forgot_passwords_controller_spec.rb
475
+ - spec/controllers/door_mat/manage_email_spec.rb
476
+ - spec/controllers/door_mat/password_less_session_controller_spec.rb
477
+ - spec/controllers/door_mat/sign_in_controller_spec.rb
478
+ - spec/controllers/door_mat/sign_up_controller_spec.rb
479
+ - spec/factories/door_mat_access_tokens.rb
480
+ - spec/factories/door_mat_activitiess.rb
481
+ - spec/factories/door_mat_actors.rb
482
+ - spec/factories/door_mat_emails.rb
483
+ - spec/factories/door_mat_memberships.rb
484
+ - spec/factories/door_mat_sessions.rb
485
+ - spec/features/password_less_session_spec.rb
486
+ - spec/features/remember_me_spec.rb
487
+ - spec/features/session_spec.rb
488
+ - spec/lib/attr_store_spec.rb
489
+ - spec/lib/crypto_spec.rb
490
+ - spec/lib/process_spec.rb
491
+ - spec/models/door_mat/access_token_spec.rb
492
+ - spec/models/door_mat/activity_spec.rb
493
+ - spec/models/door_mat/actor_spec.rb
494
+ - spec/models/door_mat/email_spec.rb
495
+ - spec/models/door_mat/session_spec.rb
496
+ - spec/spec_helper.rb
497
+ - spec/support/timecop/timecop_helper.rb
498
+ - spec/test_app/app/assets/javascripts/application.js
499
+ - spec/test_app/app/assets/stylesheets/application.css
500
+ - spec/test_app/app/controllers/account_controller.rb
501
+ - spec/test_app/app/controllers/application_controller.rb
502
+ - spec/test_app/app/controllers/password_less_sample_controller.rb
503
+ - spec/test_app/app/controllers/static_controller.rb
504
+ - spec/test_app/app/helpers/account_helper.rb
505
+ - spec/test_app/app/helpers/application_helper.rb
506
+ - spec/test_app/app/models/game.rb
507
+ - spec/test_app/app/models/shared_data.rb
508
+ - spec/test_app/app/models/shared_key.rb
509
+ - spec/test_app/app/models/user_detail.rb
510
+ - spec/test_app/app/views/account/show.html.erb
511
+ - spec/test_app/app/views/door_mat/static/sign_out_success.html.erb
512
+ - spec/test_app/app/views/layouts/application.html.erb
513
+ - spec/test_app/app/views/password_less_sample/draw_results.html.erb
514
+ - spec/test_app/app/views/password_less_sample/final_result.html.erb
515
+ - spec/test_app/app/views/password_less_sample/play_game.html.erb
516
+ - spec/test_app/app/views/password_less_sample/show_loosing_door.html.erb
517
+ - spec/test_app/app/views/static/index.html.erb
518
+ - spec/test_app/app/views/static/only_confirmed_email_allowed.html.erb
519
+ - spec/test_app/app/views/static/page_that_require_password_reconfirmation.html.erb
520
+ - spec/test_app/app/views/static/session_protected_page.html.erb
521
+ - spec/test_app/bin/bundle
522
+ - spec/test_app/bin/rails
523
+ - spec/test_app/bin/rake
524
+ - spec/test_app/config/application.rb
525
+ - spec/test_app/config/boot.rb
526
+ - spec/test_app/config/database.yml
527
+ - spec/test_app/config/environment.rb
528
+ - spec/test_app/config/environments/development.rb
529
+ - spec/test_app/config/environments/production.rb
530
+ - spec/test_app/config/environments/test.rb
531
+ - spec/test_app/config/initializers/backtrace_silencers.rb
532
+ - spec/test_app/config/initializers/cookies_serializer.rb
533
+ - spec/test_app/config/initializers/door_mat.rb
534
+ - spec/test_app/config/initializers/filter_parameter_logging.rb
535
+ - spec/test_app/config/initializers/inflections.rb
536
+ - spec/test_app/config/initializers/mime_types.rb
537
+ - spec/test_app/config/initializers/session_store.rb
538
+ - spec/test_app/config/initializers/wrap_parameters.rb
539
+ - spec/test_app/config/locales/en.yml
540
+ - spec/test_app/config/routes.rb
541
+ - spec/test_app/config/secrets.yml
542
+ - spec/test_app/config.ru
543
+ - spec/test_app/db/migrate/20140717182813_create_user_details.rb
544
+ - spec/test_app/db/migrate/20140908225256_create_shared_data.rb
545
+ - spec/test_app/db/migrate/20140908225604_create_shared_keys.rb
546
+ - spec/test_app/db/migrate/20141121190714_create_games.rb
547
+ - spec/test_app/public/404.html
548
+ - spec/test_app/public/422.html
549
+ - spec/test_app/public/500.html
550
+ - spec/test_app/public/favicon.ico
551
+ - spec/test_app/Rakefile
552
+ - spec/test_app/README.rdoc