brainsome_devise 3.3.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 (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'