door_mat 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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,31 @@
1
+ module DoorMat
2
+ class SignIn
3
+
4
+ include ActiveModel::Model
5
+
6
+ attr_accessor :email, :password, :is_public, :remember_me
7
+
8
+ validates_format_of :email, with: DoorMat::Regex.simple_email
9
+ validates :password, length: { minimum: 1 }
10
+
11
+ def initialize(attributes={})
12
+ super
13
+
14
+ @is_public = '1' if @is_public.nil?
15
+ @remember_me = '0' if @remember_me.nil?
16
+ end
17
+
18
+ def is_public?
19
+ '1' == @is_public
20
+ end
21
+
22
+ def remember_me?
23
+ '1' == @remember_me
24
+ end
25
+
26
+ def add_generic_error_msg
27
+ self.errors[:base] << I18n.t("door_mat.sign_in.failed")
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,17 @@
1
+ module DoorMat
2
+ class SignUp
3
+
4
+ include ActiveModel::Model
5
+
6
+ attr_accessor :email, :password, :password_confirmation
7
+
8
+ validates_format_of :email, with: DoorMat::Regex.simple_email
9
+ validates :password, length: { minimum: 1 }
10
+ validates :password, confirmation: true
11
+
12
+ def add_generic_error_msg
13
+ self.errors[:base] << I18n.t("door_mat.sign_up.failed")
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ <p>To confirm your email, please visit the URL below</p>
2
+
3
+ <p>This email body is a DoorMat placeholder, override it with app/views/door_mat/activity_mailer/confirm_email.html.erb in your application.</p>
4
+
5
+ <ul>
6
+ <% @parameters.keys.each do |key| %>
7
+ <li>
8
+ <%= key %> -> <%= @parameters[key] %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
@@ -0,0 +1,7 @@
1
+ To confirm your email, please visit the URL below
2
+
3
+ This email body is a DoorMat placeholder, override it with app/views/door_mat/activity_mailer/confirm_email.text.erb in your application.
4
+
5
+ <% @parameters.keys.each do |key| %>
6
+ <%= key %> -> <%= @parameters[key] %>
7
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <p>To reset your password, please visit the URL below</p>
2
+
3
+ <p>This email body is a DoorMat placeholder, override it with app/views/door_mat/activity_mailer/reset_password.html.erb in your application.</p>
4
+
5
+ <ul>
6
+ <% @parameters.keys.each do |key| %>
7
+ <li>
8
+ <%= key %> -> <%= @parameters[key] %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
@@ -0,0 +1,7 @@
1
+ To reset your password, please visit the URL below
2
+
3
+ This email body is a DoorMat placeholder, override it with app/views/door_mat/activity_mailer/reset_password.text.erb in your application.
4
+
5
+ <% @parameters.keys.each do |key| %>
6
+ <%= key %> -> <%= @parameters[key] %>
7
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <h1>Change Password</h1>
2
+
3
+ <%= form_for(@change_password, url: change_password_path) do |f| %>
4
+ <%= render 'door_mat/helpers/errors_if_any', {object: @change_password} %>
5
+
6
+ <div class="field">
7
+ <%= f.label :old_password %><br>
8
+ <%= f.password_field :old_password %>
9
+ </div>
10
+ <div class="field">
11
+ <%= f.label :new_password %><br>
12
+ <%= f.password_field :new_password %>
13
+ </div>
14
+ <div class="field">
15
+ <%= f.label :new_password_confirmation %><br>
16
+ <%= f.password_field :new_password_confirmation %>
17
+ </div>
18
+
19
+ <div class="actions">
20
+ <%= f.submit t("door_mat.change_password.submit_button") %>
21
+ </div>
22
+ <% end %>
@@ -0,0 +1,34 @@
1
+ <h1>Forgot Password</h1>
2
+
3
+
4
+ <%= form_for(@forgot_password, url: reset_password_path) do |f| %>
5
+ <%= render 'door_mat/helpers/errors_if_any', {object: @forgot_password} %>
6
+
7
+ <div class="field">
8
+ <%= f.hidden_field :token %>
9
+ </div>
10
+
11
+ <div class="field">
12
+ <%= f.label :email %><br>
13
+ <%= f.text_field :email %>
14
+ </div>
15
+
16
+ <div class="field">
17
+ <%= f.label :password %><br>
18
+ <%= f.password_field :password %>
19
+ </div>
20
+
21
+ <div class="field">
22
+ <%= f.label :password_confirmation %><br>
23
+ <%= f.password_field :password_confirmation %>
24
+ </div>
25
+
26
+ <div class="field">
27
+ <%= f.label :recovery_key %><br>
28
+ <%= f.file_field :recovery_key %>
29
+ </div>
30
+
31
+ <div class="actions">
32
+ <%= f.submit t("door_mat.forgot_password.submit_button") %>
33
+ </div>
34
+ <% end %>
@@ -0,0 +1,14 @@
1
+ <h1>Forgot Password</h1>
2
+
3
+ <%= form_for(@forgot_password, url: forgot_password_path) do |f| %>
4
+ <%= render 'door_mat/helpers/errors_if_any', {object: @forgot_password} %>
5
+
6
+ <div class="field">
7
+ <%= f.label :email %><br>
8
+ <%= f.text_field :email %>
9
+ </div>
10
+
11
+ <div class="actions">
12
+ <%= f.submit t("door_mat.forgot_password.submit_button") %>
13
+ </div>
14
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <% id |= 'error_explanation' %>
2
+ <% if object.errors.any? %>
3
+ <div id='<%= id %>'>
4
+ <ul>
5
+ <% object.errors.full_messages.each do |msg| %>
6
+ <li><%= msg %></li>
7
+ <% end %>
8
+ </ul>
9
+ </div>
10
+ <% end %>
@@ -0,0 +1,14 @@
1
+ <h1>Add email</h1>
2
+
3
+ <%= form_for(@email, url: add_email_path) do |f| %>
4
+ <%= render 'door_mat/helpers/errors_if_any', {object: @email} %>
5
+
6
+ <div class="field">
7
+ <%= f.label :address %><br>
8
+ <%= f.text_field :address %>
9
+ </div>
10
+
11
+ <div class="actions">
12
+ <%= f.submit t("door_mat.manage_email.add_button") %>
13
+ </div>
14
+ <% end %>
@@ -0,0 +1,16 @@
1
+ Follow the access link in the email just sent to you or paste in the access code below.
2
+
3
+ <%= form_for(@access_token, url: access_token_path) do |f| %>
4
+ <%= render 'door_mat/helpers/errors_if_any', {object: @access_token} %>
5
+
6
+ <%= f.hidden_field :token_for, :value => @access_token.token_for %>
7
+
8
+ <div class="field">
9
+ <%= f.label :code %><br>
10
+ <%= f.text_field :identifier %>
11
+ </div>
12
+
13
+ <div class="actions">
14
+ <%= f.submit t("door_mat.password_less_session.submit_token") %>
15
+ </div>
16
+ <% end %>
@@ -0,0 +1,34 @@
1
+ Enter your email address twice in the form below. A mail will be sent to you immediately with an access token.
2
+
3
+ <p>This page is a DoorMat placeholder, to override it create app/views/door_mat/password_less_session/new.html.erb in your application</p>
4
+
5
+ <%= form_for(@access_token, url: @access_token.form_submit_path(controller)) do |f| %>
6
+ <%= render 'door_mat/helpers/errors_if_any', {object: @access_token} %>
7
+
8
+ <div class="field">
9
+ <%= f.label :name %><br>
10
+ <%= f.text_field :name %>
11
+ </div>
12
+
13
+ <div class="field">
14
+ <%= f.label :identifier %><br>
15
+ <%= f.text_field :identifier %>
16
+ </div>
17
+ <div class="field">
18
+ <%= f.label :confirm_identifier %><br>
19
+ <%= f.password_field :confirm_identifier %>
20
+ </div>
21
+
22
+ <div class="field">
23
+ <%= f.label :is_this_a_public_computer? %>
24
+ <%= f.check_box :is_public %>
25
+ </div>
26
+ <div class="field">
27
+ <%= f.label :remember_me? %>
28
+ <%= f.check_box :remember_me %>
29
+ </div>
30
+
31
+ <div class="actions">
32
+ <%= f.submit t("door_mat.password_less_session.submit_button") %>
33
+ </div>
34
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <p>Please find your access link below</p>
2
+
3
+ <p>This email body is a DoorMat placeholder, override it with app/views/door_mat/password_less_session_mailer/send_token.html.erb in your application.</p>
4
+
5
+ <ul>
6
+ <% @parameters.keys.each do |key| %>
7
+ <li>
8
+ <%= key %> -> <%= @parameters[key] %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
@@ -0,0 +1,7 @@
1
+ Please find your access link below
2
+
3
+ This email body is a DoorMat placeholder, override it with app/views/door_mat/password_less_session_mailer/send_token.text.erb in your application.
4
+
5
+ <% @parameters.keys.each do |key| %>
6
+ <%= key %> -> <%= @parameters[key] %>
7
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <h1>Reconfirm Password</h1>
2
+
3
+ <% if @current_session_email.blank? %>
4
+ <p>Please type in your password one more time:</p>
5
+ <% else %>
6
+ <p>Please type in the <%= @current_session_email %> password one more time:</p>
7
+ <% end %>
8
+
9
+ <%= form_tag(door_mat.reconfirm_password_path) do %>
10
+ <%= password_field_tag %>
11
+ <%= submit_tag("Reconfirm") %>
12
+ <% end %>
@@ -0,0 +1,30 @@
1
+ <h1>Sign In</h1>
2
+
3
+ <%= form_for(@sign_in, url: sign_in_path) do |f| %>
4
+ <%= render 'door_mat/helpers/errors_if_any', {object: @sign_in} %>
5
+
6
+ <div class="field">
7
+ <%= f.label :email %><br>
8
+ <%= f.text_field :email %>
9
+ </div>
10
+ <div class="field">
11
+ <%= f.label :password %><br>
12
+ <%= f.password_field :password %>
13
+ </div>
14
+ <div class="field">
15
+ <%= f.label :is_this_a_public_computer? %>
16
+ <%= f.check_box :is_public %>
17
+ </div>
18
+ <div class="field">
19
+ <%= f.label :remember_me? %>
20
+ <%= f.check_box :remember_me %>
21
+ </div>
22
+ <p><%= link_to t("door_mat.forgot_password.link"), forgot_password_path %></p>
23
+
24
+ <div class="actions">
25
+ <%= f.submit t("door_mat.sign_in.submit_button") %>
26
+ </div>
27
+ <% end %>
28
+
29
+
30
+ <p>Don't have an account yet? <%= link_to 'Sign Up', sign_up_path %></p>
@@ -0,0 +1,24 @@
1
+ <h1>Sign Up</h1>
2
+
3
+ <%= form_for(@sign_up, url: sign_up_path) do |f| %>
4
+ <%= render 'door_mat/helpers/errors_if_any', {object: @sign_up} %>
5
+
6
+ <div class="field">
7
+ <%= f.label :email %><br>
8
+ <%= f.text_field :email %>
9
+ </div>
10
+ <div class="field">
11
+ <%= f.label :password %><br>
12
+ <%= f.password_field :password %>
13
+ </div>
14
+ <div class="field">
15
+ <%= f.label :password_confirmation %><br>
16
+ <%= f.password_field :password_confirmation %>
17
+ </div>
18
+
19
+ <div class="actions">
20
+ <%= f.submit t("door_mat.sign_up.submit_button") %>
21
+ </div>
22
+ <% end %>
23
+
24
+ <p>Already have an account? <%= link_to 'Sign In', sign_in_path %></p>
@@ -0,0 +1,5 @@
1
+ <h1>You have successfully added a new email!</h1>
2
+
3
+ <p>This page is a static DoorMat placeholder, to override it create app/views/door_mat/static/add_email_success.html.erb in your application</p>
4
+
5
+ <p>Alternatively, set the add_email_success_url redirect in config/initializers/door_mat.rb to the desired destination</p>
@@ -0,0 +1,2 @@
1
+ <p>You have successfully changed your password!</p>
2
+ <p>This page is a static DoorMat placeholder, override it with the /change_password_success route in your application.</p>
@@ -0,0 +1,2 @@
1
+ <p>You have successfully confirmed your email!</p>
2
+ <p>This page is a static DoorMat placeholder, override it with the /confirm_email_success route in your application.</p>
@@ -0,0 +1,17 @@
1
+ <h1>Please confirm your email address</h1>
2
+
3
+ <p>To access the page you requested your email address must first be confirmed</p>
4
+
5
+ <p>
6
+ To confirm your email address, please follow the link in the confirmation email
7
+ sent to <%= DoorMat::Session.current_session.email.address %>.
8
+ </p>
9
+
10
+ <p>
11
+ You can also request that a new confirmation email be sent.
12
+
13
+ <%= form_tag(door_mat.resend_email_confirmation_path) do %>
14
+ <%= hidden_field_tag( 'email', DoorMat::Session.current_session.email.to_urlsafe_encoded) %>
15
+ <%= submit_tag("Resend confirmation email") %>
16
+ <% end %>
17
+ </p>
@@ -0,0 +1,2 @@
1
+ <p>A verification email was sent to the address you provided.</p>
2
+ <p>This page is a static DoorMat placeholder, override it with the /forgot_password_verification_mail_sent route in your application.</p>
@@ -0,0 +1,4 @@
1
+ <p>Your password was successfully reconfirmed!</p>
2
+ <p>This page is a static DoorMat placeholder, override it with the /reconfirm_password_success route in your application.</p>
3
+
4
+ <p>Alternatively, set the reconfirm_password_success_url redirect in config/initializers/door_mat.rb to the desired destination</p>
@@ -0,0 +1,5 @@
1
+ <h1>You have successfully signed in!</h1>
2
+
3
+ <p>This page is a static DoorMat placeholder, to override it create app/views/door_mat/static/sign_in_success.html.erb in your application</p>
4
+
5
+ <p>Alternatively, set the sign_in_success_url redirect in config/initializers/door_mat.rb to the desired destination</p>
@@ -0,0 +1,5 @@
1
+ <h1>You have successfully signed out!</h1>
2
+
3
+ <p>This page is a static DoorMat placeholder, to override it create app/views/door_mat/static/sign_out_success.html.erb in your application</p>
4
+
5
+ <p>Alternatively, set sign_out_success_url redirect in config/initializers/door_mat.rb</p>
@@ -0,0 +1,4 @@
1
+ <p>You have successfully signed up!</p>
2
+ <p>This page is a static DoorMat placeholder, override it with the /sign_up_success route in your application.</p>
3
+
4
+ <p>Alternatively, set the sign_up_success_url redirect in config/initializers/door_mat.rb to the desired destination</p>
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/door_mat/engine', __FILE__)
6
+
7
+ # Set up gems listed in the Gemfile.
8
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
9
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
10
+
11
+ require 'rails/all'
12
+ require 'rails/engine/commands'
@@ -0,0 +1,73 @@
1
+
2
+ en:
3
+ door_mat:
4
+ activity_mailer:
5
+ confirm_email:
6
+ subject: "Confirm your email"
7
+ reset_password:
8
+ subject: "Reset your password?"
9
+ actor:
10
+ could_not_create: "Could not sign you up based on the information provided."
11
+ max_email_count_per_actor_reached: "The maximum number of email per account was reached."
12
+ email_already_associated: "This email is already associated with your account."
13
+ manage_email:
14
+ email_added: 'New email address successfully added. Please check your inbox for the confirmation email.'
15
+ could_not_delete: 'The specified email can not be deleted.'
16
+ could_not_delete_only_email: 'Can not delete the only email address associated with this account.'
17
+ could_not_delete_current_email: 'Can not delete the email address you are currently logged in with.'
18
+ can_not_delete_primary: 'Primary email can not be deleted; specify a different primary email first.'
19
+ email_deleted: 'Email deleted.'
20
+ primary_email_updated: 'Primary email was set.'
21
+ could_not_update_primary_email: 'Primary email could not be set.'
22
+ add_button: 'Add email'
23
+ session:
24
+ initialization_failure: "Session initialization failed"
25
+ could_not_create: "Could not sign you in based on the information provided."
26
+ submit_button: "Sign In"
27
+ password_less_session:
28
+ create_failed: "Could not create a request token based on the information provided."
29
+ blank_identifier: "The identifier can not be blank."
30
+ identifier_error: "The identifier provided does not match the confirmation field. Please check the inputs."
31
+ expect_email_identifier: "The identifier is expected to be a valid email address."
32
+ submit_button: "Request access token"
33
+ submit_token: "Submit access token"
34
+ actor_missing: 'Access token could not be created.'
35
+ password_less_session_mailer:
36
+ send_token:
37
+ subject: "Your access link"
38
+ forgot_password:
39
+ make_new_request: 'Please make a new request.'
40
+ link: "Forgot your password?"
41
+ submit_button: "Reset"
42
+ sign_up:
43
+ submit_button: "Sign Up"
44
+ failed: "Could not sign you up based on the information provided"
45
+ sign_in:
46
+ submit_button: "Sign In"
47
+ failed: "Could not sign you in based on the information provided"
48
+ change_password:
49
+ submit_button: "Change Password"
50
+ failed: "Failed to changed password"
51
+ success: "Password was successfully changed"
52
+ security_questions:
53
+ q1: "What was the name of your first stuffed animal?"
54
+ q2: "What was your childhood nickname?"
55
+ q3: "What is the name of your favorite childhood friend?"
56
+ q4: "What was your childhood phone number including area code? (e.g., 000-000-0000)"
57
+ q5: "What street did you live on in third grade?"
58
+ q6: "What was the last name of your third grade teacher?"
59
+ q7: "What school did you attend for sixth grade?"
60
+ q8: "What is your oldest sibling’s birthday month and year? (e.g., January 1900)"
61
+ q9: "What is your oldest sibling's middle name?"
62
+ q10: "Where were you when you had your first kiss?"
63
+ q11: "What is the first name of the boy or girl that you first kissed?"
64
+ q12: "What is your oldest cousin's first and last name?"
65
+ q13: "In what city or town did your mother and father meet?"
66
+ q14: "In what city does your nearest sibling live?"
67
+ q15: "What is your maternal grandmother's maiden name?"
68
+ q16: "In what city or town was your first job?"
69
+ q17: "What is the name of the place your wedding reception was held?"
70
+ q18: "What is the name of a college you applied to but didn't attend?"
71
+ q19: "In what city did you meet your spouse/significant other?"
72
+ q20: "What is the middle name of your oldest child?"
73
+ q21: "Where were you when you first heard about 9/11?"