deviseOne 1.0.0

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 (246) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +38 -0
  4. data/.yardopts +9 -0
  5. data/CHANGELOG.md +1117 -0
  6. data/CONTRIBUTING.md +14 -0
  7. data/Gemfile +29 -0
  8. data/Gemfile.lock +199 -0
  9. data/MIT-LICENSE +20 -0
  10. data/README.md +529 -0
  11. data/Rakefile +35 -0
  12. data/app/controllers/devise/confirmations_controller.rb +47 -0
  13. data/app/controllers/devise/omniauth_callbacks_controller.rb +30 -0
  14. data/app/controllers/devise/passwords_controller.rb +71 -0
  15. data/app/controllers/devise/registrations_controller.rb +143 -0
  16. data/app/controllers/devise/sessions_controller.rb +166 -0
  17. data/app/controllers/devise/unlocks_controller.rb +46 -0
  18. data/app/controllers/devise_controller.rb +193 -0
  19. data/app/helpers/devise_helper.rb +25 -0
  20. data/app/mailers/devise/mailer.rb +20 -0
  21. data/app/views/devise/confirmations/new.html.erb +16 -0
  22. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  23. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  24. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  25. data/app/views/devise/passwords/edit.html.erb +25 -0
  26. data/app/views/devise/passwords/new.html.erb +16 -0
  27. data/app/views/devise/registrations/edit.html.erb +39 -0
  28. data/app/views/devise/registrations/new.html.erb +29 -0
  29. data/app/views/devise/sessions/new.html.erb +27 -0
  30. data/app/views/devise/shared/_links.html.erb +21 -0
  31. data/app/views/devise/unlocks/new.html.erb +16 -0
  32. data/config/locales/en.yml +70 -0
  33. data/devise.gemspec +33 -0
  34. data/devise.png +0 -0
  35. data/gemfiles/Gemfile.rails-3.2-stable +29 -0
  36. data/gemfiles/Gemfile.rails-3.2-stable.lock +169 -0
  37. data/gemfiles/Gemfile.rails-4.0-stable +29 -0
  38. data/gemfiles/Gemfile.rails-4.0-stable.lock +165 -0
  39. data/gemfiles/Gemfile.rails-4.1-stable +29 -0
  40. data/gemfiles/Gemfile.rails-4.1-stable.lock +170 -0
  41. data/lib/devise.rb +499 -0
  42. data/lib/devise/controllers/helpers.rb +284 -0
  43. data/lib/devise/controllers/rememberable.rb +47 -0
  44. data/lib/devise/controllers/scoped_views.rb +17 -0
  45. data/lib/devise/controllers/sign_in_out.rb +102 -0
  46. data/lib/devise/controllers/store_location.rb +58 -0
  47. data/lib/devise/controllers/url_helpers.rb +69 -0
  48. data/lib/devise/delegator.rb +16 -0
  49. data/lib/devise/failure_app.rb +212 -0
  50. data/lib/devise/hooks/activatable.rb +10 -0
  51. data/lib/devise/hooks/csrf_cleaner.rb +7 -0
  52. data/lib/devise/hooks/forgetable.rb +9 -0
  53. data/lib/devise/hooks/lockable.rb +7 -0
  54. data/lib/devise/hooks/proxy.rb +21 -0
  55. data/lib/devise/hooks/rememberable.rb +7 -0
  56. data/lib/devise/hooks/timeoutable.rb +35 -0
  57. data/lib/devise/hooks/trackable.rb +9 -0
  58. data/lib/devise/mailers/helpers.rb +90 -0
  59. data/lib/devise/mapping.rb +175 -0
  60. data/lib/devise/models.rb +119 -0
  61. data/lib/devise/models/authenticatable.rb +290 -0
  62. data/lib/devise/models/confirmable.rb +305 -0
  63. data/lib/devise/models/database_authenticatable.rb +164 -0
  64. data/lib/devise/models/lockable.rb +196 -0
  65. data/lib/devise/models/omniauthable.rb +27 -0
  66. data/lib/devise/models/recoverable.rb +157 -0
  67. data/lib/devise/models/registerable.rb +25 -0
  68. data/lib/devise/models/rememberable.rb +142 -0
  69. data/lib/devise/models/timeoutable.rb +49 -0
  70. data/lib/devise/models/trackable.rb +38 -0
  71. data/lib/devise/models/validatable.rb +66 -0
  72. data/lib/devise/modules.rb +28 -0
  73. data/lib/devise/omniauth.rb +28 -0
  74. data/lib/devise/omniauth/config.rb +45 -0
  75. data/lib/devise/omniauth/url_helpers.rb +18 -0
  76. data/lib/devise/orm/active_record.rb +3 -0
  77. data/lib/devise/orm/mongoid.rb +3 -0
  78. data/lib/devise/parameter_filter.rb +40 -0
  79. data/lib/devise/parameter_sanitizer.rb +99 -0
  80. data/lib/devise/rails.rb +56 -0
  81. data/lib/devise/rails/routes.rb +495 -0
  82. data/lib/devise/rails/warden_compat.rb +22 -0
  83. data/lib/devise/strategies/authenticatable.rb +173 -0
  84. data/lib/devise/strategies/base.rb +20 -0
  85. data/lib/devise/strategies/database_authenticatable.rb +24 -0
  86. data/lib/devise/strategies/rememberable.rb +59 -0
  87. data/lib/devise/test_helpers.rb +132 -0
  88. data/lib/devise/time_inflector.rb +14 -0
  89. data/lib/devise/token_generator.rb +70 -0
  90. data/lib/devise/version.rb +3 -0
  91. data/lib/generators/active_record/devise_generator.rb +91 -0
  92. data/lib/generators/active_record/templates/migration.rb +18 -0
  93. data/lib/generators/active_record/templates/migration_existing.rb +25 -0
  94. data/lib/generators/devise/controllers_generator.rb +44 -0
  95. data/lib/generators/devise/devise_generator.rb +26 -0
  96. data/lib/generators/devise/install_generator.rb +29 -0
  97. data/lib/generators/devise/orm_helpers.rb +51 -0
  98. data/lib/generators/devise/views_generator.rb +135 -0
  99. data/lib/generators/mongoid/devise_generator.rb +55 -0
  100. data/lib/generators/templates/README +35 -0
  101. data/lib/generators/templates/controllers/README +14 -0
  102. data/lib/generators/templates/controllers/confirmations_controller.rb +28 -0
  103. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +28 -0
  104. data/lib/generators/templates/controllers/passwords_controller.rb +32 -0
  105. data/lib/generators/templates/controllers/registrations_controller.rb +60 -0
  106. data/lib/generators/templates/controllers/sessions_controller.rb +25 -0
  107. data/lib/generators/templates/controllers/unlocks_controller.rb +28 -0
  108. data/lib/generators/templates/devise.rb +263 -0
  109. data/lib/generators/templates/markerb/confirmation_instructions.markerb +5 -0
  110. data/lib/generators/templates/markerb/reset_password_instructions.markerb +8 -0
  111. data/lib/generators/templates/markerb/unlock_instructions.markerb +7 -0
  112. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +16 -0
  113. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +19 -0
  114. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +15 -0
  115. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +27 -0
  116. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +17 -0
  117. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +15 -0
  118. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +16 -0
  119. data/script/cached-bundle +49 -0
  120. data/script/s3-put +71 -0
  121. data/test/controllers/custom_registrations_controller_test.rb +35 -0
  122. data/test/controllers/custom_strategy_test.rb +62 -0
  123. data/test/controllers/helpers_test.rb +316 -0
  124. data/test/controllers/internal_helpers_test.rb +129 -0
  125. data/test/controllers/load_hooks_controller_test.rb +19 -0
  126. data/test/controllers/passwords_controller_test.rb +31 -0
  127. data/test/controllers/sessions_controller_test.rb +102 -0
  128. data/test/controllers/url_helpers_test.rb +65 -0
  129. data/test/delegator_test.rb +19 -0
  130. data/test/devise_test.rb +107 -0
  131. data/test/failure_app_test.rb +275 -0
  132. data/test/generators/active_record_generator_test.rb +109 -0
  133. data/test/generators/controllers_generator_test.rb +48 -0
  134. data/test/generators/devise_generator_test.rb +39 -0
  135. data/test/generators/install_generator_test.rb +13 -0
  136. data/test/generators/mongoid_generator_test.rb +23 -0
  137. data/test/generators/views_generator_test.rb +96 -0
  138. data/test/helpers/devise_helper_test.rb +49 -0
  139. data/test/integration/authenticatable_test.rb +731 -0
  140. data/test/integration/confirmable_test.rb +324 -0
  141. data/test/integration/database_authenticatable_test.rb +94 -0
  142. data/test/integration/http_authenticatable_test.rb +105 -0
  143. data/test/integration/lockable_test.rb +239 -0
  144. data/test/integration/omniauthable_test.rb +133 -0
  145. data/test/integration/recoverable_test.rb +334 -0
  146. data/test/integration/registerable_test.rb +361 -0
  147. data/test/integration/rememberable_test.rb +176 -0
  148. data/test/integration/timeoutable_test.rb +189 -0
  149. data/test/integration/trackable_test.rb +92 -0
  150. data/test/mailers/confirmation_instructions_test.rb +115 -0
  151. data/test/mailers/reset_password_instructions_test.rb +96 -0
  152. data/test/mailers/unlock_instructions_test.rb +91 -0
  153. data/test/mapping_test.rb +128 -0
  154. data/test/models/authenticatable_test.rb +23 -0
  155. data/test/models/confirmable_test.rb +461 -0
  156. data/test/models/database_authenticatable_test.rb +249 -0
  157. data/test/models/lockable_test.rb +328 -0
  158. data/test/models/omniauthable_test.rb +7 -0
  159. data/test/models/recoverable_test.rb +205 -0
  160. data/test/models/registerable_test.rb +7 -0
  161. data/test/models/rememberable_test.rb +198 -0
  162. data/test/models/serializable_test.rb +49 -0
  163. data/test/models/timeoutable_test.rb +51 -0
  164. data/test/models/trackable_test.rb +41 -0
  165. data/test/models/validatable_test.rb +127 -0
  166. data/test/models_test.rb +144 -0
  167. data/test/omniauth/config_test.rb +57 -0
  168. data/test/omniauth/url_helpers_test.rb +54 -0
  169. data/test/orm/active_record.rb +10 -0
  170. data/test/orm/mongoid.rb +13 -0
  171. data/test/parameter_sanitizer_test.rb +81 -0
  172. data/test/rails_app/Rakefile +6 -0
  173. data/test/rails_app/app/active_record/admin.rb +6 -0
  174. data/test/rails_app/app/active_record/shim.rb +2 -0
  175. data/test/rails_app/app/active_record/user.rb +6 -0
  176. data/test/rails_app/app/active_record/user_on_engine.rb +7 -0
  177. data/test/rails_app/app/active_record/user_on_main_app.rb +7 -0
  178. data/test/rails_app/app/controllers/admins/sessions_controller.rb +6 -0
  179. data/test/rails_app/app/controllers/admins_controller.rb +11 -0
  180. data/test/rails_app/app/controllers/application_controller.rb +12 -0
  181. data/test/rails_app/app/controllers/application_with_fake_engine.rb +30 -0
  182. data/test/rails_app/app/controllers/custom/registrations_controller.rb +21 -0
  183. data/test/rails_app/app/controllers/home_controller.rb +25 -0
  184. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +2 -0
  185. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +2 -0
  186. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +14 -0
  187. data/test/rails_app/app/controllers/users_controller.rb +31 -0
  188. data/test/rails_app/app/helpers/application_helper.rb +3 -0
  189. data/test/rails_app/app/mailers/users/from_proc_mailer.rb +3 -0
  190. data/test/rails_app/app/mailers/users/mailer.rb +3 -0
  191. data/test/rails_app/app/mailers/users/reply_to_mailer.rb +4 -0
  192. data/test/rails_app/app/mongoid/admin.rb +29 -0
  193. data/test/rails_app/app/mongoid/shim.rb +23 -0
  194. data/test/rails_app/app/mongoid/user.rb +39 -0
  195. data/test/rails_app/app/mongoid/user_on_engine.rb +39 -0
  196. data/test/rails_app/app/mongoid/user_on_main_app.rb +39 -0
  197. data/test/rails_app/app/views/admins/index.html.erb +1 -0
  198. data/test/rails_app/app/views/admins/sessions/new.html.erb +2 -0
  199. data/test/rails_app/app/views/home/admin_dashboard.html.erb +1 -0
  200. data/test/rails_app/app/views/home/index.html.erb +1 -0
  201. data/test/rails_app/app/views/home/join.html.erb +1 -0
  202. data/test/rails_app/app/views/home/private.html.erb +1 -0
  203. data/test/rails_app/app/views/home/user_dashboard.html.erb +1 -0
  204. data/test/rails_app/app/views/layouts/application.html.erb +24 -0
  205. data/test/rails_app/app/views/users/edit_form.html.erb +1 -0
  206. data/test/rails_app/app/views/users/index.html.erb +1 -0
  207. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +1 -0
  208. data/test/rails_app/app/views/users/sessions/new.html.erb +1 -0
  209. data/test/rails_app/bin/bundle +3 -0
  210. data/test/rails_app/bin/rails +4 -0
  211. data/test/rails_app/bin/rake +4 -0
  212. data/test/rails_app/config.ru +4 -0
  213. data/test/rails_app/config/application.rb +40 -0
  214. data/test/rails_app/config/boot.rb +14 -0
  215. data/test/rails_app/config/database.yml +18 -0
  216. data/test/rails_app/config/environment.rb +5 -0
  217. data/test/rails_app/config/environments/development.rb +30 -0
  218. data/test/rails_app/config/environments/production.rb +80 -0
  219. data/test/rails_app/config/environments/test.rb +36 -0
  220. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  221. data/test/rails_app/config/initializers/devise.rb +180 -0
  222. data/test/rails_app/config/initializers/inflections.rb +2 -0
  223. data/test/rails_app/config/initializers/secret_token.rb +8 -0
  224. data/test/rails_app/config/initializers/session_store.rb +1 -0
  225. data/test/rails_app/config/routes.rb +122 -0
  226. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +71 -0
  227. data/test/rails_app/db/schema.rb +55 -0
  228. data/test/rails_app/lib/shared_admin.rb +17 -0
  229. data/test/rails_app/lib/shared_user.rb +29 -0
  230. data/test/rails_app/lib/shared_user_without_omniauth.rb +13 -0
  231. data/test/rails_app/public/404.html +26 -0
  232. data/test/rails_app/public/422.html +26 -0
  233. data/test/rails_app/public/500.html +26 -0
  234. data/test/rails_app/public/favicon.ico +0 -0
  235. data/test/routes_test.rb +264 -0
  236. data/test/support/action_controller/record_identifier.rb +10 -0
  237. data/test/support/assertions.rb +39 -0
  238. data/test/support/helpers.rb +73 -0
  239. data/test/support/integration.rb +92 -0
  240. data/test/support/locale/en.yml +8 -0
  241. data/test/support/mongoid.yml +6 -0
  242. data/test/support/webrat/integrations/rails.rb +24 -0
  243. data/test/test_helper.rb +34 -0
  244. data/test/test_helpers_test.rb +163 -0
  245. data/test/test_models.rb +33 -0
  246. metadata +531 -0
@@ -0,0 +1,2 @@
1
+ ActiveSupport::Inflector.inflections do |inflect|
2
+ end
@@ -0,0 +1,8 @@
1
+ config = Rails.application.config
2
+
3
+ if Devise.rails4?
4
+ config.secret_key_base = 'd588e99efff13a86461fd6ab82327823ad2f8feb5dc217ce652cdd9f0dfc5eb4b5a62a92d24d2574d7d51dfb1ea8dd453ea54e00cf672159a13104a135422a10'
5
+ else
6
+ config.secret_token = 'ea942c41850d502f2c8283e26bdc57829f471bb18224ddff0a192c4f32cdf6cb5aa0d82b3a7a7adbeb640c4b06f3aa1cd5f098162d8240f669b39d6b49680571'
7
+ config.session_store :cookie_store, key: "_my_app"
8
+ end
@@ -0,0 +1 @@
1
+ RailsApp::Application.config.session_store :cookie_store, key: '_rails_app_session'
@@ -0,0 +1,122 @@
1
+ Rails.application.routes.draw do
2
+ # Resources for testing
3
+ resources :users, only: [:index] do
4
+ member do
5
+ get :expire
6
+ get :accept
7
+ get :edit_form
8
+ put :update_form
9
+ end
10
+
11
+ authenticate do
12
+ post :exhibit, on: :member
13
+ end
14
+ end
15
+
16
+ resources :admins, only: [:index] do
17
+ get :expire, on: :member
18
+ end
19
+
20
+ # Users scope
21
+ devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
22
+
23
+ devise_for :user_on_main_apps,
24
+ class_name: 'UserOnMainApp',
25
+ router_name: :main_app,
26
+ module: :devise
27
+
28
+ devise_for :user_on_engines,
29
+ class_name: 'UserOnEngine',
30
+ router_name: :fake_engine,
31
+ module: :devise
32
+
33
+ as :user do
34
+ get "/as/sign_in", to: "devise/sessions#new"
35
+ end
36
+
37
+ get "/sign_in", to: "devise/sessions#new"
38
+
39
+ # Routes for custom controller testing
40
+ devise_for :user, only: [:registrations], controllers: { registrations: "custom/registrations" }, as: :custom, path: :custom
41
+
42
+ # Admin scope
43
+ devise_for :admin, path: "admin_area", controllers: { sessions: :"admins/sessions" }, skip: :passwords
44
+
45
+ get "/admin_area/home", to: "admins#index", as: :admin_root
46
+ get "/anywhere", to: "foo#bar", as: :new_admin_password
47
+
48
+ authenticate(:admin) do
49
+ get "/private", to: "home#private", as: :private
50
+ end
51
+
52
+ authenticate(:admin, lambda { |admin| admin.active? }) do
53
+ get "/private/active", to: "home#private", as: :private_active
54
+ end
55
+
56
+ authenticated :admin do
57
+ get "/dashboard", to: "home#admin_dashboard"
58
+ end
59
+
60
+ authenticated :admin, lambda { |admin| admin.active? } do
61
+ get "/dashboard/active", to: "home#admin_dashboard"
62
+ end
63
+
64
+ authenticated do
65
+ get "/dashboard", to: "home#user_dashboard"
66
+ end
67
+
68
+ unauthenticated do
69
+ get "/join", to: "home#join"
70
+ end
71
+
72
+ # Routes for constraints testing
73
+ devise_for :headquarters_admin, class_name: "Admin", path: "headquarters", constraints: {host: /192\.168\.1\.\d\d\d/}
74
+
75
+ constraints(host: /192\.168\.1\.\d\d\d/) do
76
+ devise_for :homebase_admin, class_name: "Admin", path: "homebase"
77
+ end
78
+
79
+ scope(subdomain: 'sub') do
80
+ devise_for :subdomain_users, class_name: "User", only: [:sessions]
81
+ end
82
+
83
+ devise_for :skip_admin, class_name: "Admin", skip: :all
84
+
85
+ # Routes for format=false testing
86
+ devise_for :htmlonly_admin, class_name: "Admin", skip: [:confirmations, :unlocks], path: "htmlonly_admin", format: false, skip_helpers: [:confirmations, :unlocks]
87
+ devise_for :htmlonly_users, class_name: "User", only: [:confirmations, :unlocks], path: "htmlonly_users", format: false, skip_helpers: true
88
+
89
+ # Other routes for routing_test.rb
90
+ devise_for :reader, class_name: "User", only: :passwords
91
+
92
+ scope host: "sub.example.com" do
93
+ devise_for :sub_admin, class_name: "Admin"
94
+ end
95
+
96
+ namespace :publisher, path_names: { sign_in: "i_dont_care", sign_out: "get_out" } do
97
+ devise_for :accounts, class_name: "Admin", path_names: { sign_in: "get_in" }
98
+ end
99
+
100
+ scope ":locale", module: :invalid do
101
+ devise_for :accounts, singular: "manager", class_name: "Admin",
102
+ path_names: {
103
+ sign_in: "login", sign_out: "logout",
104
+ password: "secret", confirmation: "verification",
105
+ unlock: "unblock", sign_up: "register",
106
+ registration: "management",
107
+ cancel: "giveup", edit: "edit/profile"
108
+ }, failure_app: lambda { |env| [404, {"Content-Type" => "text/plain"}, ["Oops, not found"]] }, module: :devise
109
+ end
110
+
111
+ namespace :sign_out_via, module: "devise" do
112
+ devise_for :deletes, sign_out_via: :delete, class_name: "Admin"
113
+ devise_for :posts, sign_out_via: :post, class_name: "Admin"
114
+ devise_for :delete_or_posts, sign_out_via: [:delete, :post], class_name: "Admin"
115
+ end
116
+
117
+ get "/set", to: "home#set"
118
+ get "/unauthenticated", to: "home#unauthenticated"
119
+ get "/custom_strategy/new"
120
+
121
+ root to: "home#index", via: [:get, :post]
122
+ end
@@ -0,0 +1,71 @@
1
+ class CreateTables < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :username
5
+ t.string :facebook_token
6
+
7
+ ## Database authenticatable
8
+ t.string :email, null: false, default: ""
9
+ t.string :encrypted_password, null: false, default: ""
10
+
11
+ ## Recoverable
12
+ t.string :reset_password_token
13
+ t.datetime :reset_password_sent_at
14
+
15
+ ## Rememberable
16
+ t.datetime :remember_created_at
17
+
18
+ ## Trackable
19
+ t.integer :sign_in_count, default: 0
20
+ t.datetime :current_sign_in_at
21
+ t.datetime :last_sign_in_at
22
+ t.string :current_sign_in_ip
23
+ t.string :last_sign_in_ip
24
+
25
+ ## Confirmable
26
+ t.string :confirmation_token
27
+ t.datetime :confirmed_at
28
+ t.datetime :confirmation_sent_at
29
+ # t.string :unconfirmed_email # Only if using reconfirmable
30
+
31
+ ## Lockable
32
+ t.integer :failed_attempts, default: 0 # Only if lock strategy is :failed_attempts
33
+ t.string :unlock_token # Only if unlock strategy is :email or :both
34
+ t.datetime :locked_at
35
+
36
+ t.timestamps null: false
37
+ end
38
+
39
+ create_table :admins do |t|
40
+ ## Database authenticatable
41
+ t.string :email, null: true
42
+ t.string :encrypted_password, null: true
43
+
44
+ ## Recoverable
45
+ t.string :reset_password_token
46
+ t.datetime :reset_password_sent_at
47
+
48
+ ## Rememberable
49
+ t.datetime :remember_created_at
50
+
51
+ ## Confirmable
52
+ t.string :confirmation_token
53
+ t.datetime :confirmed_at
54
+ t.datetime :confirmation_sent_at
55
+ t.string :unconfirmed_email # Only if using reconfirmable
56
+
57
+ ## Lockable
58
+ t.datetime :locked_at
59
+
60
+ ## Attribute for testing route blocks
61
+ t.boolean :active, default: false
62
+
63
+ t.timestamps null: false
64
+ end
65
+ end
66
+
67
+ def self.down
68
+ drop_table :users
69
+ drop_table :admins
70
+ end
71
+ end
@@ -0,0 +1,55 @@
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 that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20100401102949) do
15
+
16
+ create_table "admins", force: true do |t|
17
+ t.string "email"
18
+ t.string "encrypted_password"
19
+ t.string "reset_password_token"
20
+ t.datetime "reset_password_sent_at"
21
+ t.datetime "remember_created_at"
22
+ t.string "confirmation_token"
23
+ t.datetime "confirmed_at"
24
+ t.datetime "confirmation_sent_at"
25
+ t.string "unconfirmed_email"
26
+ t.datetime "locked_at"
27
+ t.boolean "active", default: false
28
+ t.datetime "created_at"
29
+ t.datetime "updated_at"
30
+ end
31
+
32
+ create_table "users", force: true do |t|
33
+ t.string "username"
34
+ t.string "facebook_token"
35
+ t.string "email", default: "", null: false
36
+ t.string "encrypted_password", default: "", null: false
37
+ t.string "reset_password_token"
38
+ t.datetime "reset_password_sent_at"
39
+ t.datetime "remember_created_at"
40
+ t.integer "sign_in_count", default: 0
41
+ t.datetime "current_sign_in_at"
42
+ t.datetime "last_sign_in_at"
43
+ t.string "current_sign_in_ip"
44
+ t.string "last_sign_in_ip"
45
+ t.string "confirmation_token"
46
+ t.datetime "confirmed_at"
47
+ t.datetime "confirmation_sent_at"
48
+ t.integer "failed_attempts", default: 0
49
+ t.string "unlock_token"
50
+ t.datetime "locked_at"
51
+ t.datetime "created_at"
52
+ t.datetime "updated_at"
53
+ end
54
+
55
+ end
@@ -0,0 +1,17 @@
1
+ module SharedAdmin
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ devise :database_authenticatable, :registerable,
6
+ :timeoutable, :recoverable, :lockable, :confirmable,
7
+ unlock_strategy: :time, lock_strategy: :none,
8
+ allow_unconfirmed_access_for: 2.weeks, reconfirmable: true
9
+
10
+ validates_length_of :reset_password_token, minimum: 3, allow_blank: true
11
+ validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
12
+ end
13
+
14
+ def raw_confirmation_token
15
+ @raw_confirmation_token
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ module SharedUser
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ devise :database_authenticatable, :confirmable, :lockable, :recoverable,
6
+ :registerable, :rememberable, :timeoutable,
7
+ :trackable, :validatable, :omniauthable, password_length: 7..72
8
+
9
+ attr_accessor :other_key
10
+
11
+ # They need to be included after Devise is called.
12
+ extend ExtendMethods
13
+ end
14
+
15
+ def raw_confirmation_token
16
+ @raw_confirmation_token
17
+ end
18
+
19
+ module ExtendMethods
20
+ def new_with_session(params, session)
21
+ super.tap do |user|
22
+ if data = session["devise.facebook_data"]
23
+ user.email = data["email"]
24
+ user.confirmed_at = Time.now
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ module SharedUserWithoutOmniauth
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ devise :database_authenticatable, :confirmable, :lockable, :recoverable,
6
+ :registerable, :rememberable, :timeoutable,
7
+ :trackable, :validatable
8
+ end
9
+
10
+ def raw_confirmation_token
11
+ @raw_confirmation_token
12
+ end
13
+ end
@@ -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,26 @@
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
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
+ </div>
25
+ </body>
26
+ </html>
File without changes
@@ -0,0 +1,264 @@
1
+ require 'test_helper'
2
+
3
+ ExpectedRoutingError = Devise.rails4? ? MiniTest::Assertion : ActionController::RoutingError
4
+
5
+ class DefaultRoutingTest < ActionController::TestCase
6
+ test 'map new user session' do
7
+ assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: 'users/sign_in', method: :get})
8
+ assert_named_route "/users/sign_in", :new_user_session_path
9
+ end
10
+
11
+ test 'map create user session' do
12
+ assert_recognizes({controller: 'devise/sessions', action: 'create'}, {path: 'users/sign_in', method: :post})
13
+ assert_named_route "/users/sign_in", :user_session_path
14
+ end
15
+
16
+ test 'map destroy user session' do
17
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: 'users/sign_out', method: :get})
18
+ assert_named_route "/users/sign_out", :destroy_user_session_path
19
+ end
20
+
21
+ test 'map new user confirmation' do
22
+ assert_recognizes({controller: 'devise/confirmations', action: 'new'}, 'users/confirmation/new')
23
+ assert_named_route "/users/confirmation/new", :new_user_confirmation_path
24
+ end
25
+
26
+ test 'map create user confirmation' do
27
+ assert_recognizes({controller: 'devise/confirmations', action: 'create'}, {path: 'users/confirmation', method: :post})
28
+ assert_named_route "/users/confirmation", :user_confirmation_path
29
+ end
30
+
31
+ test 'map show user confirmation' do
32
+ assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: 'users/confirmation', method: :get})
33
+ end
34
+
35
+ test 'map new user password' do
36
+ assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'users/password/new')
37
+ assert_named_route "/users/password/new", :new_user_password_path
38
+ end
39
+
40
+ test 'map create user password' do
41
+ assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: 'users/password', method: :post})
42
+ assert_named_route "/users/password", :user_password_path
43
+ end
44
+
45
+ test 'map edit user password' do
46
+ assert_recognizes({controller: 'devise/passwords', action: 'edit'}, 'users/password/edit')
47
+ assert_named_route "/users/password/edit", :edit_user_password_path
48
+ end
49
+
50
+ test 'map update user password' do
51
+ assert_recognizes({controller: 'devise/passwords', action: 'update'}, {path: 'users/password', method: :put})
52
+ end
53
+
54
+ test 'map new user unlock' do
55
+ assert_recognizes({controller: 'devise/unlocks', action: 'new'}, 'users/unlock/new')
56
+ assert_named_route "/users/unlock/new", :new_user_unlock_path
57
+ end
58
+
59
+ test 'map create user unlock' do
60
+ assert_recognizes({controller: 'devise/unlocks', action: 'create'}, {path: 'users/unlock', method: :post})
61
+ assert_named_route "/users/unlock", :user_unlock_path
62
+ end
63
+
64
+ test 'map show user unlock' do
65
+ assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: 'users/unlock', method: :get})
66
+ end
67
+
68
+ test 'map new user registration' do
69
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, 'users/sign_up')
70
+ assert_named_route "/users/sign_up", :new_user_registration_path
71
+ end
72
+
73
+ test 'map create user registration' do
74
+ assert_recognizes({controller: 'devise/registrations', action: 'create'}, {path: 'users', method: :post})
75
+ assert_named_route "/users", :user_registration_path
76
+ end
77
+
78
+ test 'map edit user registration' do
79
+ assert_recognizes({controller: 'devise/registrations', action: 'edit'}, {path: 'users/edit', method: :get})
80
+ assert_named_route "/users/edit", :edit_user_registration_path
81
+ end
82
+
83
+ test 'map update user registration' do
84
+ assert_recognizes({controller: 'devise/registrations', action: 'update'}, {path: 'users', method: :put})
85
+ end
86
+
87
+ test 'map destroy user registration' do
88
+ assert_recognizes({controller: 'devise/registrations', action: 'destroy'}, {path: 'users', method: :delete})
89
+ end
90
+
91
+ test 'map cancel user registration' do
92
+ assert_recognizes({controller: 'devise/registrations', action: 'cancel'}, {path: 'users/cancel', method: :get})
93
+ assert_named_route "/users/cancel", :cancel_user_registration_path
94
+ end
95
+
96
+ test 'map omniauth callbacks' do
97
+ assert_recognizes({controller: 'users/omniauth_callbacks', action: 'facebook'}, {path: 'users/auth/facebook/callback', method: :get})
98
+ assert_recognizes({controller: 'users/omniauth_callbacks', action: 'facebook'}, {path: 'users/auth/facebook/callback', method: :post})
99
+ assert_named_route "/users/auth/facebook/callback", :user_omniauth_callback_path, :facebook
100
+
101
+ # named open_id
102
+ assert_recognizes({controller: 'users/omniauth_callbacks', action: 'google'}, {path: 'users/auth/google/callback', method: :get})
103
+ assert_recognizes({controller: 'users/omniauth_callbacks', action: 'google'}, {path: 'users/auth/google/callback', method: :post})
104
+ assert_named_route "/users/auth/google/callback", :user_omniauth_callback_path, :google
105
+
106
+ assert_raise ExpectedRoutingError do
107
+ assert_recognizes({controller: 'ysers/omniauth_callbacks', action: 'twitter'}, {path: 'users/auth/twitter/callback', method: :get})
108
+ end
109
+ end
110
+
111
+ protected
112
+
113
+ def assert_named_route(result, *args)
114
+ assert_equal result, @routes.url_helpers.send(*args)
115
+ end
116
+ end
117
+
118
+ class CustomizedRoutingTest < ActionController::TestCase
119
+ test 'map admin with :path option' do
120
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'admin_area/sign_up', method: :get})
121
+ end
122
+
123
+ test 'map admin with :controllers option' do
124
+ assert_recognizes({controller: 'admins/sessions', action: 'new'}, {path: 'admin_area/sign_in', method: :get})
125
+ end
126
+
127
+ test 'does not map admin password' do
128
+ assert_raise ExpectedRoutingError do
129
+ assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'admin_area/password/new')
130
+ end
131
+ end
132
+
133
+ test 'subdomain admin' do
134
+ assert_recognizes({"host"=>"sub.example.com", controller: 'devise/sessions', action: 'new'}, {host: "sub.example.com", path: '/sub_admin/sign_in', method: :get})
135
+ end
136
+
137
+ test 'does only map reader password' do
138
+ assert_raise ExpectedRoutingError do
139
+ assert_recognizes({controller: 'devise/sessions', action: 'new'}, 'reader/sessions/new')
140
+ end
141
+ assert_recognizes({controller: 'devise/passwords', action: 'new'}, 'reader/password/new')
142
+ end
143
+
144
+ test 'map account with custom path name for session sign in' do
145
+ assert_recognizes({controller: 'devise/sessions', action: 'new', locale: 'en'}, '/en/accounts/login')
146
+ end
147
+
148
+ test 'map account with custom path name for session sign out' do
149
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy', locale: 'en'}, '/en/accounts/logout')
150
+ end
151
+
152
+ test 'map account with custom path name for password' do
153
+ assert_recognizes({controller: 'devise/passwords', action: 'new', locale: 'en'}, '/en/accounts/secret/new')
154
+ end
155
+
156
+ test 'map account with custom path name for registration' do
157
+ assert_recognizes({controller: 'devise/registrations', action: 'new', locale: 'en'}, '/en/accounts/management/register')
158
+ end
159
+
160
+ test 'map account with custom path name for edit registration' do
161
+ assert_recognizes({controller: 'devise/registrations', action: 'edit', locale: 'en'}, '/en/accounts/management/edit/profile')
162
+ end
163
+
164
+ test 'map account with custom path name for cancel registration' do
165
+ assert_recognizes({controller: 'devise/registrations', action: 'cancel', locale: 'en'}, '/en/accounts/management/giveup')
166
+ end
167
+
168
+ test 'map deletes with :sign_out_via option' do
169
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/deletes/sign_out', method: :delete})
170
+ assert_raise ExpectedRoutingError do
171
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/deletes/sign_out', method: :get})
172
+ end
173
+ end
174
+
175
+ test 'map posts with :sign_out_via option' do
176
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/posts/sign_out', method: :post})
177
+ assert_raise ExpectedRoutingError do
178
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/posts/sign_out', method: :get})
179
+ end
180
+ end
181
+
182
+ test 'map delete_or_posts with :sign_out_via option' do
183
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :post})
184
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :delete})
185
+ assert_raise ExpectedRoutingError do
186
+ assert_recognizes({controller: 'devise/sessions', action: 'destroy'}, {path: '/sign_out_via/delete_or_posts/sign_out', method: :get})
187
+ end
188
+ end
189
+
190
+ test 'map with constraints defined in hash' do
191
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://192.168.1.100/headquarters/sign_up', method: :get})
192
+ assert_raise ExpectedRoutingError do
193
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://10.0.0.100/headquarters/sign_up', method: :get})
194
+ end
195
+ end
196
+
197
+ test 'map with constraints defined in block' do
198
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://192.168.1.100/homebase/sign_up', method: :get})
199
+ assert_raise ExpectedRoutingError do
200
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: 'http://10.0.0.100//homebase/sign_up', method: :get})
201
+ end
202
+ end
203
+
204
+ test 'map with format false for sessions' do
205
+ assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: '/htmlonly_admin/sign_in', method: :get})
206
+ assert_raise ExpectedRoutingError do
207
+ assert_recognizes({controller: 'devise/sessions', action: 'new'}, {path: '/htmlonly_admin/sign_in.xml', method: :get})
208
+ end
209
+ end
210
+
211
+ test 'map with format false for passwords' do
212
+ assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: '/htmlonly_admin/password', method: :post})
213
+ assert_raise ExpectedRoutingError do
214
+ assert_recognizes({controller: 'devise/passwords', action: 'create'}, {path: '/htmlonly_admin/password.xml', method: :post})
215
+ end
216
+ end
217
+
218
+ test 'map with format false for registrations' do
219
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: '/htmlonly_admin/sign_up', method: :get})
220
+ assert_raise ExpectedRoutingError do
221
+ assert_recognizes({controller: 'devise/registrations', action: 'new'}, {path: '/htmlonly_admin/sign_up.xml', method: :get})
222
+ end
223
+ end
224
+
225
+ test 'map with format false for confirmations' do
226
+ assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: '/htmlonly_users/confirmation', method: :get})
227
+ assert_raise ExpectedRoutingError do
228
+ assert_recognizes({controller: 'devise/confirmations', action: 'show'}, {path: '/htmlonly_users/confirmation.xml', method: :get})
229
+ end
230
+ end
231
+
232
+ test 'map with format false for unlocks' do
233
+ assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: '/htmlonly_users/unlock', method: :get})
234
+ assert_raise ExpectedRoutingError do
235
+ assert_recognizes({controller: 'devise/unlocks', action: 'show'}, {path: '/htmlonly_users/unlock.xml', method: :get})
236
+ end
237
+ end
238
+
239
+ test 'map with format false is not permanent' do
240
+ assert_equal "/set.xml", @routes.url_helpers.set_path(:xml)
241
+ end
242
+
243
+ test 'checks if mapping has proper configuration for omniauth callback' do
244
+ e = assert_raise ArgumentError do
245
+ routes = ActionDispatch::Routing::RouteSet.new
246
+ routes.draw do
247
+ devise_for :not_omniauthable, class_name: 'Admin', controllers: {omniauth_callbacks: "users/omniauth_callbacks"}
248
+ end
249
+ end
250
+ assert_match "Mapping omniauth_callbacks on a resource that is not omniauthable", e.message
251
+ end
252
+ end
253
+
254
+ class ScopedRoutingTest < ActionController::TestCase
255
+ test 'map publisher account' do
256
+ assert_recognizes({controller: 'publisher/registrations', action: 'new'}, {path: '/publisher/accounts/sign_up', method: :get})
257
+ assert_equal '/publisher/accounts/sign_up', @routes.url_helpers.new_publisher_account_registration_path
258
+ end
259
+
260
+ test 'map publisher account merges path names' do
261
+ assert_recognizes({controller: 'publisher/sessions', action: 'new'}, {path: '/publisher/accounts/get_in', method: :get})
262
+ assert_equal '/publisher/accounts/get_in', @routes.url_helpers.new_publisher_account_session_path
263
+ end
264
+ end