brainsome_devise 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +35 -0
  4. data/.yardopts +9 -0
  5. data/CHANGELOG.md +1086 -0
  6. data/CONTRIBUTING.md +14 -0
  7. data/Gemfile +29 -0
  8. data/Gemfile.lock +166 -0
  9. data/MIT-LICENSE +20 -0
  10. data/README.md +506 -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 +70 -0
  15. data/app/controllers/devise/registrations_controller.rb +148 -0
  16. data/app/controllers/devise/sessions_controller.rb +76 -0
  17. data/app/controllers/devise/unlocks_controller.rb +46 -0
  18. data/app/controllers/devise_controller.rb +176 -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 +12 -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 +16 -0
  26. data/app/views/devise/passwords/new.html.erb +12 -0
  27. data/app/views/devise/registrations/edit.html.erb +29 -0
  28. data/app/views/devise/registrations/new.html.erb +18 -0
  29. data/app/views/devise/sessions/new.html.erb +17 -0
  30. data/app/views/devise/shared/_links.html.erb +25 -0
  31. data/app/views/devise/unlocks/new.html.erb +12 -0
  32. data/config/locales/en.yml +60 -0
  33. data/devise.gemspec +27 -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 +166 -0
  37. data/gemfiles/Gemfile.rails-4.0-stable +29 -0
  38. data/gemfiles/Gemfile.rails-4.0-stable.lock +162 -0
  39. data/gemfiles/Gemfile.rails-head +32 -0
  40. data/gemfiles/Gemfile.rails-head.lock +206 -0
  41. data/lib/devise.rb +495 -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 +56 -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 +205 -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 +284 -0
  62. data/lib/devise/models/confirmable.rb +295 -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 +147 -0
  67. data/lib/devise/models/registerable.rb +25 -0
  68. data/lib/devise/models/rememberable.rb +129 -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 +498 -0
  82. data/lib/devise/rails/warden_compat.rb +22 -0
  83. data/lib/devise/strategies/authenticatable.rb +174 -0
  84. data/lib/devise/strategies/base.rb +20 -0
  85. data/lib/devise/strategies/database_authenticatable.rb +23 -0
  86. data/lib/devise/strategies/rememberable.rb +55 -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/devise_generator.rb +26 -0
  95. data/lib/generators/devise/install_generator.rb +29 -0
  96. data/lib/generators/devise/orm_helpers.rb +51 -0
  97. data/lib/generators/devise/views_generator.rb +135 -0
  98. data/lib/generators/mongoid/devise_generator.rb +55 -0
  99. data/lib/generators/templates/README +35 -0
  100. data/lib/generators/templates/devise.rb +263 -0
  101. data/lib/generators/templates/markerb/confirmation_instructions.markerb +5 -0
  102. data/lib/generators/templates/markerb/reset_password_instructions.markerb +8 -0
  103. data/lib/generators/templates/markerb/unlock_instructions.markerb +7 -0
  104. data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +16 -0
  105. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +19 -0
  106. data/lib/generators/templates/simple_form_for/passwords/new.html.erb +15 -0
  107. data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +27 -0
  108. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +17 -0
  109. data/lib/generators/templates/simple_form_for/sessions/new.html.erb +15 -0
  110. data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +16 -0
  111. data/script/cached-bundle +49 -0
  112. data/script/s3-put +71 -0
  113. data/test/controllers/custom_registrations_controller_test.rb +35 -0
  114. data/test/controllers/custom_strategy_test.rb +62 -0
  115. data/test/controllers/helpers_test.rb +311 -0
  116. data/test/controllers/internal_helpers_test.rb +123 -0
  117. data/test/controllers/passwords_controller_test.rb +31 -0
  118. data/test/controllers/sessions_controller_test.rb +103 -0
  119. data/test/controllers/url_helpers_test.rb +59 -0
  120. data/test/delegator_test.rb +19 -0
  121. data/test/devise_test.rb +107 -0
  122. data/test/failure_app_test.rb +268 -0
  123. data/test/generators/active_record_generator_test.rb +109 -0
  124. data/test/generators/devise_generator_test.rb +39 -0
  125. data/test/generators/install_generator_test.rb +13 -0
  126. data/test/generators/mongoid_generator_test.rb +23 -0
  127. data/test/generators/views_generator_test.rb +96 -0
  128. data/test/helpers/devise_helper_test.rb +52 -0
  129. data/test/integration/authenticatable_test.rb +729 -0
  130. data/test/integration/confirmable_test.rb +324 -0
  131. data/test/integration/database_authenticatable_test.rb +84 -0
  132. data/test/integration/http_authenticatable_test.rb +105 -0
  133. data/test/integration/lockable_test.rb +239 -0
  134. data/test/integration/omniauthable_test.rb +133 -0
  135. data/test/integration/recoverable_test.rb +334 -0
  136. data/test/integration/registerable_test.rb +359 -0
  137. data/test/integration/rememberable_test.rb +167 -0
  138. data/test/integration/timeoutable_test.rb +189 -0
  139. data/test/integration/trackable_test.rb +92 -0
  140. data/test/mailers/confirmation_instructions_test.rb +115 -0
  141. data/test/mailers/reset_password_instructions_test.rb +96 -0
  142. data/test/mailers/unlock_instructions_test.rb +91 -0
  143. data/test/mapping_test.rb +127 -0
  144. data/test/models/authenticatable_test.rb +13 -0
  145. data/test/models/confirmable_test.rb +454 -0
  146. data/test/models/database_authenticatable_test.rb +249 -0
  147. data/test/models/lockable_test.rb +322 -0
  148. data/test/models/omniauthable_test.rb +7 -0
  149. data/test/models/recoverable_test.rb +196 -0
  150. data/test/models/registerable_test.rb +7 -0
  151. data/test/models/rememberable_test.rb +198 -0
  152. data/test/models/serializable_test.rb +49 -0
  153. data/test/models/timeoutable_test.rb +51 -0
  154. data/test/models/trackable_test.rb +41 -0
  155. data/test/models/validatable_test.rb +127 -0
  156. data/test/models_test.rb +144 -0
  157. data/test/omniauth/config_test.rb +57 -0
  158. data/test/omniauth/url_helpers_test.rb +54 -0
  159. data/test/orm/active_record.rb +10 -0
  160. data/test/orm/mongoid.rb +13 -0
  161. data/test/parameter_sanitizer_test.rb +81 -0
  162. data/test/rails_app/Rakefile +6 -0
  163. data/test/rails_app/app/active_record/admin.rb +6 -0
  164. data/test/rails_app/app/active_record/shim.rb +2 -0
  165. data/test/rails_app/app/active_record/user.rb +6 -0
  166. data/test/rails_app/app/active_record/user_on_engine.rb +7 -0
  167. data/test/rails_app/app/active_record/user_on_main_app.rb +7 -0
  168. data/test/rails_app/app/controllers/admins/sessions_controller.rb +6 -0
  169. data/test/rails_app/app/controllers/admins_controller.rb +11 -0
  170. data/test/rails_app/app/controllers/application_controller.rb +12 -0
  171. data/test/rails_app/app/controllers/application_with_fake_engine.rb +30 -0
  172. data/test/rails_app/app/controllers/custom/registrations_controller.rb +21 -0
  173. data/test/rails_app/app/controllers/home_controller.rb +25 -0
  174. data/test/rails_app/app/controllers/publisher/registrations_controller.rb +2 -0
  175. data/test/rails_app/app/controllers/publisher/sessions_controller.rb +2 -0
  176. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +14 -0
  177. data/test/rails_app/app/controllers/users_controller.rb +31 -0
  178. data/test/rails_app/app/helpers/application_helper.rb +3 -0
  179. data/test/rails_app/app/mailers/users/mailer.rb +12 -0
  180. data/test/rails_app/app/mongoid/admin.rb +29 -0
  181. data/test/rails_app/app/mongoid/shim.rb +23 -0
  182. data/test/rails_app/app/mongoid/user.rb +39 -0
  183. data/test/rails_app/app/mongoid/user_on_engine.rb +39 -0
  184. data/test/rails_app/app/mongoid/user_on_main_app.rb +39 -0
  185. data/test/rails_app/app/views/admins/index.html.erb +1 -0
  186. data/test/rails_app/app/views/admins/sessions/new.html.erb +2 -0
  187. data/test/rails_app/app/views/home/admin_dashboard.html.erb +1 -0
  188. data/test/rails_app/app/views/home/index.html.erb +1 -0
  189. data/test/rails_app/app/views/home/join.html.erb +1 -0
  190. data/test/rails_app/app/views/home/private.html.erb +1 -0
  191. data/test/rails_app/app/views/home/user_dashboard.html.erb +1 -0
  192. data/test/rails_app/app/views/layouts/application.html.erb +24 -0
  193. data/test/rails_app/app/views/users/edit_form.html.erb +1 -0
  194. data/test/rails_app/app/views/users/index.html.erb +1 -0
  195. data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +1 -0
  196. data/test/rails_app/app/views/users/sessions/new.html.erb +1 -0
  197. data/test/rails_app/bin/bundle +3 -0
  198. data/test/rails_app/bin/rails +4 -0
  199. data/test/rails_app/bin/rake +4 -0
  200. data/test/rails_app/config.ru +4 -0
  201. data/test/rails_app/config/application.rb +40 -0
  202. data/test/rails_app/config/boot.rb +14 -0
  203. data/test/rails_app/config/database.yml +18 -0
  204. data/test/rails_app/config/environment.rb +5 -0
  205. data/test/rails_app/config/environments/development.rb +30 -0
  206. data/test/rails_app/config/environments/production.rb +80 -0
  207. data/test/rails_app/config/environments/test.rb +36 -0
  208. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  209. data/test/rails_app/config/initializers/devise.rb +183 -0
  210. data/test/rails_app/config/initializers/inflections.rb +2 -0
  211. data/test/rails_app/config/initializers/secret_token.rb +8 -0
  212. data/test/rails_app/config/initializers/session_store.rb +1 -0
  213. data/test/rails_app/config/routes.rb +122 -0
  214. data/test/rails_app/db/migrate/20100401102949_create_tables.rb +71 -0
  215. data/test/rails_app/db/schema.rb +55 -0
  216. data/test/rails_app/lib/shared_admin.rb +17 -0
  217. data/test/rails_app/lib/shared_user.rb +29 -0
  218. data/test/rails_app/lib/shared_user_without_omniauth.rb +13 -0
  219. data/test/rails_app/public/404.html +26 -0
  220. data/test/rails_app/public/422.html +26 -0
  221. data/test/rails_app/public/500.html +26 -0
  222. data/test/rails_app/public/favicon.ico +0 -0
  223. data/test/routes_test.rb +264 -0
  224. data/test/support/action_controller/record_identifier.rb +10 -0
  225. data/test/support/assertions.rb +39 -0
  226. data/test/support/helpers.rb +70 -0
  227. data/test/support/integration.rb +92 -0
  228. data/test/support/locale/en.yml +8 -0
  229. data/test/support/mongoid.yml +6 -0
  230. data/test/support/webrat/integrations/rails.rb +24 -0
  231. data/test/test_helper.rb +29 -0
  232. data/test/test_helpers_test.rb +163 -0
  233. data/test/test_models.rb +33 -0
  234. metadata +474 -0
@@ -0,0 +1,206 @@
1
+ GIT
2
+ remote: git://github.com/mongoid/mongoid.git
3
+ revision: 5ba2e1fb4cb8189c9890e29c19cf4e16c25e4bc5
4
+ branch: master
5
+ specs:
6
+ mongoid (4.0.0)
7
+ activemodel (~> 4.0)
8
+ moped (~> 2.0.0)
9
+ origin (~> 2.1)
10
+ tzinfo (>= 0.3.37)
11
+
12
+ GIT
13
+ remote: git://github.com/rack/rack.git
14
+ revision: e4e4c397e89c026f9c23500cf7fc14ccdb756010
15
+ specs:
16
+ rack (1.6.0.beta)
17
+
18
+ GIT
19
+ remote: git://github.com/rails/arel.git
20
+ revision: c93f6bd8abc800ba31950f719f7c1006062051ae
21
+ specs:
22
+ arel (6.0.0.beta1.20140817224534)
23
+
24
+ GIT
25
+ remote: git://github.com/rails/rails.git
26
+ revision: 9733dc5b39a5c8ce53febc4b55c3b2643b14dd87
27
+ specs:
28
+ actionmailer (4.2.0.alpha)
29
+ actionpack (= 4.2.0.alpha)
30
+ actionview (= 4.2.0.alpha)
31
+ mail (~> 2.5, >= 2.5.4)
32
+ rails-dom-testing (~> 1.0, >= 1.0.2)
33
+ actionpack (4.2.0.alpha)
34
+ actionview (= 4.2.0.alpha)
35
+ activesupport (= 4.2.0.alpha)
36
+ rack (~> 1.6.0.beta)
37
+ rack-test (~> 0.6.2)
38
+ rails-deprecated_sanitizer (~> 1.0, >= 1.0.2)
39
+ rails-dom-testing (~> 1.0, >= 1.0.2)
40
+ actionview (4.2.0.alpha)
41
+ activesupport (= 4.2.0.alpha)
42
+ builder (~> 3.1)
43
+ erubis (~> 2.7.0)
44
+ rails-deprecated_sanitizer (~> 1.0, >= 1.0.2)
45
+ rails-dom-testing (~> 1.0, >= 1.0.2)
46
+ activejob (4.2.0.alpha)
47
+ globalid (>= 0.2.3)
48
+ activemodel (4.2.0.alpha)
49
+ activesupport (= 4.2.0.alpha)
50
+ builder (~> 3.1)
51
+ activerecord (4.2.0.alpha)
52
+ activemodel (= 4.2.0.alpha)
53
+ activesupport (= 4.2.0.alpha)
54
+ arel (>= 6.0.0.beta1, < 6.1)
55
+ activesupport (4.2.0.alpha)
56
+ i18n (>= 0.7.0.beta1, < 0.8)
57
+ json (~> 1.7, >= 1.7.7)
58
+ minitest (~> 5.1)
59
+ thread_safe (~> 0.1)
60
+ tzinfo (~> 1.1)
61
+ rails (4.2.0.alpha)
62
+ actionmailer (= 4.2.0.alpha)
63
+ actionpack (= 4.2.0.alpha)
64
+ actionview (= 4.2.0.alpha)
65
+ activejob (= 4.2.0.alpha)
66
+ activemodel (= 4.2.0.alpha)
67
+ activerecord (= 4.2.0.alpha)
68
+ activesupport (= 4.2.0.alpha)
69
+ bundler (>= 1.3.0, < 2.0)
70
+ railties (= 4.2.0.alpha)
71
+ sprockets-rails (~> 3.0.0.beta1)
72
+ railties (4.2.0.alpha)
73
+ actionpack (= 4.2.0.alpha)
74
+ activesupport (= 4.2.0.alpha)
75
+ rake (>= 0.8.7)
76
+ thor (>= 0.18.1, < 2.0)
77
+
78
+ GIT
79
+ remote: git://github.com/svenfuchs/i18n.git
80
+ revision: 4612e6ebf357fba5f90f879ff8b753f8cf8415ff
81
+ specs:
82
+ i18n (0.7.0.beta1)
83
+
84
+ PATH
85
+ remote: ..
86
+ specs:
87
+ devise (3.3.0)
88
+ bcrypt (~> 3.0)
89
+ orm_adapter (~> 0.1)
90
+ railties (>= 3.2.6, < 5)
91
+ thread_safe (~> 0.1)
92
+ warden (~> 1.2.3)
93
+
94
+ GEM
95
+ remote: https://rubygems.org/
96
+ specs:
97
+ bcrypt (3.1.7)
98
+ bson (2.3.0)
99
+ builder (3.2.2)
100
+ connection_pool (2.0.0)
101
+ erubis (2.7.0)
102
+ faraday (0.9.0)
103
+ multipart-post (>= 1.2, < 3)
104
+ globalid (0.2.3)
105
+ activesupport (>= 4.1.0)
106
+ hashie (3.2.0)
107
+ hike (1.2.3)
108
+ json (1.8.1)
109
+ jwt (1.0.0)
110
+ mail (2.6.1)
111
+ mime-types (>= 1.16, < 3)
112
+ metaclass (0.0.4)
113
+ mime-types (2.3)
114
+ mini_portile (0.6.0)
115
+ minitest (5.4.0)
116
+ mocha (1.1.0)
117
+ metaclass (~> 0.0.1)
118
+ moped (2.0.0)
119
+ bson (~> 2.2)
120
+ connection_pool (~> 2.0)
121
+ optionable (~> 0.2.0)
122
+ multi_json (1.10.1)
123
+ multi_xml (0.5.5)
124
+ multipart-post (2.0.0)
125
+ nokogiri (1.6.3.1)
126
+ mini_portile (= 0.6.0)
127
+ oauth2 (0.9.4)
128
+ faraday (>= 0.8, < 0.10)
129
+ jwt (~> 1.0)
130
+ multi_json (~> 1.3)
131
+ multi_xml (~> 0.5)
132
+ rack (~> 1.2)
133
+ omniauth (1.2.2)
134
+ hashie (>= 1.2, < 4)
135
+ rack (~> 1.0)
136
+ omniauth-facebook (1.6.0)
137
+ omniauth-oauth2 (~> 1.1)
138
+ omniauth-oauth2 (1.1.2)
139
+ faraday (>= 0.8, < 0.10)
140
+ multi_json (~> 1.3)
141
+ oauth2 (~> 0.9.3)
142
+ omniauth (~> 1.2)
143
+ omniauth-openid (1.0.1)
144
+ omniauth (~> 1.0)
145
+ rack-openid (~> 1.3.1)
146
+ optionable (0.2.0)
147
+ origin (2.1.1)
148
+ orm_adapter (0.5.0)
149
+ rack-openid (1.3.1)
150
+ rack (>= 1.1.0)
151
+ ruby-openid (>= 2.1.8)
152
+ rack-test (0.6.2)
153
+ rack (>= 1.0)
154
+ rails-deprecated_sanitizer (1.0.2)
155
+ activesupport (>= 4.2.0.alpha)
156
+ rails-dom-testing (1.0.2)
157
+ activesupport
158
+ nokogiri (~> 1.6.0)
159
+ rails-deprecated_sanitizer (>= 1.0.1)
160
+ rake (10.3.2)
161
+ rdoc (4.1.1)
162
+ json (~> 1.4)
163
+ ruby-openid (2.5.0)
164
+ sprockets (2.12.1)
165
+ hike (~> 1.2)
166
+ multi_json (~> 1.0)
167
+ rack (~> 1.0)
168
+ tilt (~> 1.1, != 1.3.0)
169
+ sprockets-rails (3.0.0.beta1)
170
+ actionpack (>= 4.0)
171
+ activesupport (>= 4.0)
172
+ sprockets (~> 2.8)
173
+ sqlite3 (1.3.9)
174
+ thor (0.19.1)
175
+ thread_safe (0.3.4)
176
+ tilt (1.4.1)
177
+ tzinfo (1.2.2)
178
+ thread_safe (~> 0.1)
179
+ warden (1.2.3)
180
+ rack (>= 1.0)
181
+ webrat (0.7.3)
182
+ nokogiri (>= 1.2.0)
183
+ rack (>= 1.0)
184
+ rack-test (>= 0.5.3)
185
+
186
+ PLATFORMS
187
+ ruby
188
+
189
+ DEPENDENCIES
190
+ activerecord-jdbc-adapter
191
+ activerecord-jdbcsqlite3-adapter
192
+ arel!
193
+ devise!
194
+ i18n!
195
+ jruby-openssl
196
+ mocha (~> 1.1)
197
+ mongoid!
198
+ omniauth (~> 1.2.0)
199
+ omniauth-facebook
200
+ omniauth-oauth2 (~> 1.1.0)
201
+ omniauth-openid (~> 1.0.1)
202
+ rack!
203
+ rails!
204
+ rdoc
205
+ sqlite3
206
+ webrat (= 0.7.3)
@@ -0,0 +1,495 @@
1
+ require 'rails'
2
+ require 'active_support/core_ext/numeric/time'
3
+ require 'active_support/dependencies'
4
+ require 'orm_adapter'
5
+ require 'set'
6
+ require 'securerandom'
7
+
8
+ module Devise
9
+ autoload :Delegator, 'devise/delegator'
10
+ autoload :FailureApp, 'devise/failure_app'
11
+ autoload :OmniAuth, 'devise/omniauth'
12
+ autoload :ParameterFilter, 'devise/parameter_filter'
13
+ autoload :BaseSanitizer, 'devise/parameter_sanitizer'
14
+ autoload :ParameterSanitizer, 'devise/parameter_sanitizer'
15
+ autoload :TestHelpers, 'devise/test_helpers'
16
+ autoload :TimeInflector, 'devise/time_inflector'
17
+ autoload :TokenGenerator, 'devise/token_generator'
18
+
19
+ module Controllers
20
+ autoload :Helpers, 'devise/controllers/helpers'
21
+ autoload :Rememberable, 'devise/controllers/rememberable'
22
+ autoload :ScopedViews, 'devise/controllers/scoped_views'
23
+ autoload :SignInOut, 'devise/controllers/sign_in_out'
24
+ autoload :StoreLocation, 'devise/controllers/store_location'
25
+ autoload :UrlHelpers, 'devise/controllers/url_helpers'
26
+ end
27
+
28
+ module Hooks
29
+ autoload :Proxy, 'devise/hooks/proxy'
30
+ end
31
+
32
+ module Mailers
33
+ autoload :Helpers, 'devise/mailers/helpers'
34
+ end
35
+
36
+ module Strategies
37
+ autoload :Base, 'devise/strategies/base'
38
+ autoload :Authenticatable, 'devise/strategies/authenticatable'
39
+ end
40
+
41
+ # Constants which holds devise configuration for extensions. Those should
42
+ # not be modified by the "end user" (this is why they are constants).
43
+ ALL = []
44
+ CONTROLLERS = ActiveSupport::OrderedHash.new
45
+ ROUTES = ActiveSupport::OrderedHash.new
46
+ STRATEGIES = ActiveSupport::OrderedHash.new
47
+ URL_HELPERS = ActiveSupport::OrderedHash.new
48
+
49
+ # Strategies that do not require user input.
50
+ NO_INPUT = []
51
+
52
+ # True values used to check params
53
+ TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE']
54
+
55
+ # Secret key used by the key generator
56
+ mattr_accessor :secret_key
57
+ @@secret_key = nil
58
+
59
+ [ :allow_insecure_token_lookup,
60
+ :allow_insecure_sign_in_after_confirmation,
61
+ :token_authentication_key ].each do |method|
62
+ class_eval <<-RUBY
63
+ def self.#{method}
64
+ ActiveSupport::Deprecation.warn "Devise.#{method} is deprecated " \
65
+ "and has no effect"
66
+ end
67
+
68
+ def self.#{method}=(val)
69
+ ActiveSupport::Deprecation.warn "Devise.#{method}= is deprecated " \
70
+ "and has no effect"
71
+ end
72
+ RUBY
73
+ end
74
+
75
+ # Custom domain or key for cookies. Not set by default
76
+ mattr_accessor :rememberable_options
77
+ @@rememberable_options = {}
78
+
79
+ # The number of times to encrypt password.
80
+ mattr_accessor :stretches
81
+ @@stretches = 10
82
+
83
+ # The default key used when authenticating over http auth.
84
+ mattr_accessor :http_authentication_key
85
+ @@http_authentication_key = nil
86
+
87
+ # Keys used when authenticating a user.
88
+ mattr_accessor :authentication_keys
89
+ @@authentication_keys = [ :email ]
90
+
91
+ # Request keys used when authenticating a user.
92
+ mattr_accessor :request_keys
93
+ @@request_keys = []
94
+
95
+ # Keys that should be case-insensitive.
96
+ mattr_accessor :case_insensitive_keys
97
+ @@case_insensitive_keys = [ :email ]
98
+
99
+ # Keys that should have whitespace stripped.
100
+ mattr_accessor :strip_whitespace_keys
101
+ @@strip_whitespace_keys = []
102
+
103
+ # If http authentication is enabled by default.
104
+ mattr_accessor :http_authenticatable
105
+ @@http_authenticatable = false
106
+
107
+ # If http headers should be returned for ajax requests. True by default.
108
+ mattr_accessor :http_authenticatable_on_xhr
109
+ @@http_authenticatable_on_xhr = true
110
+
111
+ # If params authenticatable is enabled by default.
112
+ mattr_accessor :params_authenticatable
113
+ @@params_authenticatable = true
114
+
115
+ # The realm used in Http Basic Authentication.
116
+ mattr_accessor :http_authentication_realm
117
+ @@http_authentication_realm = "Application"
118
+
119
+ # Email regex used to validate email formats. It simply asserts that
120
+ # an one (and only one) @ exists in the given string. This is mainly
121
+ # to give user feedback and not to assert the e-mail validity.
122
+ mattr_accessor :email_regexp
123
+ @@email_regexp = /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/
124
+
125
+ # Range validation for password length
126
+ mattr_accessor :password_length
127
+ @@password_length = 6..128
128
+
129
+ # The time the user will be remembered without asking for credentials again.
130
+ mattr_accessor :remember_for
131
+ @@remember_for = 2.weeks
132
+
133
+ # If true, extends the user's remember period when remembered via cookie.
134
+ mattr_accessor :extend_remember_period
135
+ @@extend_remember_period = false
136
+
137
+ # If true, all the remember me tokens are going to be invalidated when the user signs out.
138
+ mattr_accessor :expire_all_remember_me_on_sign_out
139
+ @@expire_all_remember_me_on_sign_out = true
140
+
141
+ # Time interval you can access your account before confirming your account.
142
+ # nil - allows unconfirmed access for unlimited time
143
+ mattr_accessor :allow_unconfirmed_access_for
144
+ @@allow_unconfirmed_access_for = 0.days
145
+
146
+ # Time interval the confirmation token is valid. nil = unlimited
147
+ mattr_accessor :confirm_within
148
+ @@confirm_within = nil
149
+
150
+ # Defines which key will be used when confirming an account.
151
+ mattr_accessor :confirmation_keys
152
+ @@confirmation_keys = [ :email ]
153
+
154
+ # Defines if email should be reconfirmable.
155
+ # False by default for backwards compatibility.
156
+ mattr_accessor :reconfirmable
157
+ @@reconfirmable = false
158
+
159
+ # Time interval to timeout the user session without activity.
160
+ mattr_accessor :timeout_in
161
+ @@timeout_in = 30.minutes
162
+
163
+ # Authentication token expiration on timeout
164
+ mattr_accessor :expire_auth_token_on_timeout
165
+ @@expire_auth_token_on_timeout = false
166
+
167
+ # Used to encrypt password. Please generate one with rake secret.
168
+ mattr_accessor :pepper
169
+ @@pepper = nil
170
+
171
+ # Scoped views. Since it relies on fallbacks to render default views, it's
172
+ # turned off by default.
173
+ mattr_accessor :scoped_views
174
+ @@scoped_views = false
175
+
176
+ # Defines which strategy can be used to lock an account.
177
+ # Values: :failed_attempts, :none
178
+ mattr_accessor :lock_strategy
179
+ @@lock_strategy = :failed_attempts
180
+
181
+ # Defines which key will be used when locking and unlocking an account
182
+ mattr_accessor :unlock_keys
183
+ @@unlock_keys = [ :email ]
184
+
185
+ # Defines which strategy can be used to unlock an account.
186
+ # Values: :email, :time, :both
187
+ mattr_accessor :unlock_strategy
188
+ @@unlock_strategy = :both
189
+
190
+ # Number of authentication tries before locking an account
191
+ mattr_accessor :maximum_attempts
192
+ @@maximum_attempts = 20
193
+
194
+ # Time interval to unlock the account if :time is defined as unlock_strategy.
195
+ mattr_accessor :unlock_in
196
+ @@unlock_in = 1.hour
197
+
198
+ # Defines which key will be used when recovering the password for an account
199
+ mattr_accessor :reset_password_keys
200
+ @@reset_password_keys = [ :email ]
201
+
202
+ # Time interval you can reset your password with a reset password key
203
+ mattr_accessor :reset_password_within
204
+ @@reset_password_within = 6.hours
205
+
206
+ # The default scope which is used by warden.
207
+ mattr_accessor :default_scope
208
+ @@default_scope = nil
209
+
210
+ # Address which sends Devise e-mails.
211
+ mattr_accessor :mailer_sender
212
+ @@mailer_sender = nil
213
+
214
+ # Skip session storage for the following strategies
215
+ mattr_accessor :skip_session_storage
216
+ @@skip_session_storage = []
217
+
218
+ # Which formats should be treated as navigational.
219
+ mattr_accessor :navigational_formats
220
+ @@navigational_formats = ["*/*", :html]
221
+
222
+ # When set to true, signing out a user signs out all other scopes.
223
+ mattr_accessor :sign_out_all_scopes
224
+ @@sign_out_all_scopes = true
225
+
226
+ # The default method used while signing out
227
+ mattr_accessor :sign_out_via
228
+ @@sign_out_via = :get
229
+
230
+ # The parent controller all Devise controllers inherits from.
231
+ # Defaults to ApplicationController. This should be set early
232
+ # in the initialization process and should be set to a string.
233
+ mattr_accessor :parent_controller
234
+ @@parent_controller = "ApplicationController"
235
+
236
+ # The parent mailer all Devise mailers inherit from.
237
+ # Defaults to ActionMailer::Base. This should be set early
238
+ # in the initialization process and should be set to a string.
239
+ mattr_accessor :parent_mailer
240
+ @@parent_mailer = "ActionMailer::Base"
241
+
242
+ # The router Devise should use to generate routes. Defaults
243
+ # to :main_app. Should be overridden by engines in order
244
+ # to provide custom routes.
245
+ mattr_accessor :router_name
246
+ @@router_name = nil
247
+
248
+ # Set the omniauth path prefix so it can be overridden when
249
+ # Devise is used in a mountable engine
250
+ mattr_accessor :omniauth_path_prefix
251
+ @@omniauth_path_prefix = nil
252
+
253
+ # Set if we should clean up the CSRF Token on authentication
254
+ mattr_accessor :clean_up_csrf_token_on_authentication
255
+ @@clean_up_csrf_token_on_authentication = true
256
+
257
+ # PRIVATE CONFIGURATION
258
+
259
+ # Store scopes mappings.
260
+ mattr_reader :mappings
261
+ @@mappings = ActiveSupport::OrderedHash.new
262
+
263
+ # Omniauth configurations.
264
+ mattr_reader :omniauth_configs
265
+ @@omniauth_configs = ActiveSupport::OrderedHash.new
266
+
267
+ # Define a set of modules that are called when a mapping is added.
268
+ mattr_reader :helpers
269
+ @@helpers = Set.new
270
+ @@helpers << Devise::Controllers::Helpers
271
+
272
+ # Private methods to interface with Warden.
273
+ mattr_accessor :warden_config
274
+ @@warden_config = nil
275
+ @@warden_config_blocks = []
276
+
277
+ # When true, enter in paranoid mode to avoid user enumeration.
278
+ mattr_accessor :paranoid
279
+ @@paranoid = false
280
+
281
+ # When true, warn user if they just used next-to-last attempt of authentication
282
+ mattr_accessor :last_attempt_warning
283
+ @@last_attempt_warning = false
284
+
285
+ # Stores the token generator
286
+ mattr_accessor :token_generator
287
+ @@token_generator = nil
288
+
289
+ # Default way to setup Devise. Run rails generate devise_install to create
290
+ # a fresh initializer with all configuration values.
291
+ def self.setup
292
+ yield self
293
+ end
294
+
295
+ class Getter
296
+ def initialize name
297
+ @name = name
298
+ end
299
+
300
+ def get
301
+ ActiveSupport::Dependencies.constantize(@name)
302
+ end
303
+ end
304
+
305
+ def self.ref(arg)
306
+ if defined?(ActiveSupport::Dependencies::ClassCache)
307
+ ActiveSupport::Dependencies::reference(arg)
308
+ Getter.new(arg)
309
+ else
310
+ ActiveSupport::Dependencies.ref(arg)
311
+ end
312
+ end
313
+
314
+ def self.available_router_name
315
+ router_name || :main_app
316
+ end
317
+
318
+ def self.omniauth_providers
319
+ omniauth_configs.keys
320
+ end
321
+
322
+ # Get the mailer class from the mailer reference object.
323
+ def self.mailer
324
+ @@mailer_ref.get
325
+ end
326
+
327
+ # Set the mailer reference object to access the mailer.
328
+ def self.mailer=(class_name)
329
+ @@mailer_ref = ref(class_name)
330
+ end
331
+ self.mailer = "Devise::Mailer"
332
+
333
+ # Small method that adds a mapping to Devise.
334
+ def self.add_mapping(resource, options)
335
+ mapping = Devise::Mapping.new(resource, options)
336
+ @@mappings[mapping.name] = mapping
337
+ @@default_scope ||= mapping.name
338
+ @@helpers.each { |h| h.define_helpers(mapping) }
339
+ mapping
340
+ end
341
+
342
+ # Make Devise aware of an 3rd party Devise-module (like invitable). For convenience.
343
+ #
344
+ # == Options:
345
+ #
346
+ # +model+ - String representing the load path to a custom *model* for this module (to autoload.)
347
+ # +controller+ - Symbol representing the name of an existing or custom *controller* for this module.
348
+ # +route+ - Symbol representing the named *route* helper for this module.
349
+ # +strategy+ - Symbol representing if this module got a custom *strategy*.
350
+ #
351
+ # All values, except :model, accept also a boolean and will have the same name as the given module
352
+ # name.
353
+ #
354
+ # == Examples:
355
+ #
356
+ # Devise.add_module(:party_module)
357
+ # Devise.add_module(:party_module, strategy: true, controller: :sessions)
358
+ # Devise.add_module(:party_module, model: 'party_module/model')
359
+ #
360
+ def self.add_module(module_name, options = {})
361
+ ALL << module_name
362
+ options.assert_valid_keys(:strategy, :model, :controller, :route, :no_input)
363
+
364
+ if strategy = options[:strategy]
365
+ strategy = (strategy == true ? module_name : strategy)
366
+ STRATEGIES[module_name] = strategy
367
+ end
368
+
369
+ if controller = options[:controller]
370
+ controller = (controller == true ? module_name : controller)
371
+ CONTROLLERS[module_name] = controller
372
+ end
373
+
374
+ NO_INPUT << strategy if options[:no_input]
375
+
376
+ if route = options[:route]
377
+ case route
378
+ when TrueClass
379
+ key, value = module_name, []
380
+ when Symbol
381
+ key, value = route, []
382
+ when Hash
383
+ key, value = route.keys.first, route.values.flatten
384
+ else
385
+ raise ArgumentError, ":route should be true, a Symbol or a Hash"
386
+ end
387
+
388
+ URL_HELPERS[key] ||= []
389
+ URL_HELPERS[key].concat(value)
390
+ URL_HELPERS[key].uniq!
391
+
392
+ ROUTES[module_name] = key
393
+ end
394
+
395
+ if options[:model]
396
+ path = (options[:model] == true ? "devise/models/#{module_name}" : options[:model])
397
+ camelized = ActiveSupport::Inflector.camelize(module_name.to_s)
398
+ Devise::Models.send(:autoload, camelized.to_sym, path)
399
+ end
400
+
401
+ Devise::Mapping.add_module module_name
402
+ end
403
+
404
+ # Sets warden configuration using a block that will be invoked on warden
405
+ # initialization.
406
+ #
407
+ # Devise.setup do |config|
408
+ # config.allow_unconfirmed_access_for = 2.days
409
+ #
410
+ # config.warden do |manager|
411
+ # # Configure warden to use other strategies, like oauth.
412
+ # manager.oauth(:twitter)
413
+ # end
414
+ # end
415
+ def self.warden(&block)
416
+ @@warden_config_blocks << block
417
+ end
418
+
419
+ # Specify an omniauth provider.
420
+ #
421
+ # config.omniauth :github, APP_ID, APP_SECRET
422
+ #
423
+ def self.omniauth(provider, *args)
424
+ @@helpers << Devise::OmniAuth::UrlHelpers
425
+ config = Devise::OmniAuth::Config.new(provider, args)
426
+ @@omniauth_configs[config.strategy_name.to_sym] = config
427
+ end
428
+
429
+ # Include helpers in the given scope to AC and AV.
430
+ def self.include_helpers(scope)
431
+ ActiveSupport.on_load(:action_controller) do
432
+ include scope::Helpers if defined?(scope::Helpers)
433
+ include scope::UrlHelpers
434
+ end
435
+
436
+ ActiveSupport.on_load(:action_view) do
437
+ include scope::UrlHelpers
438
+ end
439
+ end
440
+
441
+ # Regenerates url helpers considering Devise.mapping
442
+ def self.regenerate_helpers!
443
+ Devise::Controllers::UrlHelpers.remove_helpers!
444
+ Devise::Controllers::UrlHelpers.generate_helpers!
445
+ end
446
+
447
+ # A method used internally to setup warden manager from the Rails initialize
448
+ # block.
449
+ def self.configure_warden! #:nodoc:
450
+ @@warden_configured ||= begin
451
+ warden_config.failure_app = Devise::Delegator.new
452
+ warden_config.default_scope = Devise.default_scope
453
+ warden_config.intercept_401 = false
454
+
455
+ Devise.mappings.each_value do |mapping|
456
+ warden_config.scope_defaults mapping.name, strategies: mapping.strategies
457
+
458
+ warden_config.serialize_into_session(mapping.name) do |record|
459
+ mapping.to.serialize_into_session(record)
460
+ end
461
+
462
+ warden_config.serialize_from_session(mapping.name) do |key|
463
+ # Previous versions contained an additional entry at the beginning of
464
+ # key with the record's class name.
465
+ args = key[-2, 2]
466
+ mapping.to.serialize_from_session(*args)
467
+ end
468
+ end
469
+
470
+ @@warden_config_blocks.map { |block| block.call Devise.warden_config }
471
+ true
472
+ end
473
+ end
474
+
475
+ # Generate a friendly string randomly to be used as token.
476
+ def self.friendly_token
477
+ SecureRandom.urlsafe_base64(15).tr('lIO0', 'sxyz')
478
+ end
479
+
480
+ # constant-time comparison algorithm to prevent timing attacks
481
+ def self.secure_compare(a, b)
482
+ return false if a.blank? || b.blank? || a.bytesize != b.bytesize
483
+ l = a.unpack "C#{a.bytesize}"
484
+
485
+ res = 0
486
+ b.each_byte { |byte| res |= byte ^ l.shift }
487
+ res == 0
488
+ end
489
+ end
490
+
491
+ require 'warden'
492
+ require 'devise/mapping'
493
+ require 'devise/models'
494
+ require 'devise/modules'
495
+ require 'devise/rails'