sorcery 0.8.1 → 0.9.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 (353) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +56 -0
  3. data/.travis.yml +130 -1
  4. data/CHANGELOG.md +270 -0
  5. data/Gemfile +18 -23
  6. data/README.md +371 -0
  7. data/Rakefile +3 -78
  8. data/gemfiles/active_record-rails40.gemfile +7 -0
  9. data/gemfiles/active_record-rails41.gemfile +7 -0
  10. data/gemfiles/mongo_mapper-rails40.gemfile +9 -0
  11. data/gemfiles/mongo_mapper-rails41.gemfile +9 -0
  12. data/gemfiles/mongoid-rails40.gemfile +9 -0
  13. data/gemfiles/mongoid-rails41.gemfile +9 -0
  14. data/gemfiles/mongoid3-rails32.gemfile +9 -0
  15. data/lib/generators/sorcery/USAGE +1 -1
  16. data/lib/generators/sorcery/helpers.rb +40 -0
  17. data/lib/generators/sorcery/install_generator.rb +38 -20
  18. data/lib/generators/sorcery/templates/initializer.rb +51 -15
  19. data/lib/generators/sorcery/templates/migration/activity_logging.rb +3 -10
  20. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +3 -7
  21. data/lib/generators/sorcery/templates/migration/core.rb +5 -8
  22. data/lib/generators/sorcery/templates/migration/external.rb +3 -5
  23. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -9
  24. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -10
  25. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -10
  26. data/lib/sorcery/adapters/active_record_adapter.rb +120 -0
  27. data/lib/sorcery/adapters/base_adapter.rb +30 -0
  28. data/lib/sorcery/adapters/data_mapper_adapter.rb +176 -0
  29. data/lib/sorcery/adapters/mongo_mapper_adapter.rb +110 -0
  30. data/lib/sorcery/adapters/mongoid_adapter.rb +97 -0
  31. data/lib/sorcery/controller/config.rb +65 -0
  32. data/lib/sorcery/controller/submodules/activity_logging.rb +27 -21
  33. data/lib/sorcery/controller/submodules/brute_force_protection.rb +6 -6
  34. data/lib/sorcery/controller/submodules/external.rb +107 -75
  35. data/lib/sorcery/controller/submodules/remember_me.rb +5 -5
  36. data/lib/sorcery/controller/submodules/session_timeout.rb +11 -7
  37. data/lib/sorcery/controller.rb +27 -76
  38. data/lib/sorcery/model/config.rb +96 -0
  39. data/lib/sorcery/model/submodules/activity_logging.rb +32 -12
  40. data/lib/sorcery/model/submodules/brute_force_protection.rb +36 -36
  41. data/lib/sorcery/model/submodules/external.rb +53 -9
  42. data/lib/sorcery/model/submodules/remember_me.rb +15 -19
  43. data/lib/sorcery/model/submodules/reset_password.rb +36 -33
  44. data/lib/sorcery/model/submodules/user_activation.rb +51 -48
  45. data/lib/sorcery/model/temporary_token.rb +4 -4
  46. data/lib/sorcery/model.rb +81 -175
  47. data/lib/sorcery/protocols/oauth.rb +42 -0
  48. data/lib/sorcery/protocols/oauth2.rb +47 -0
  49. data/lib/sorcery/providers/base.rb +38 -0
  50. data/lib/sorcery/providers/facebook.rb +63 -0
  51. data/lib/sorcery/providers/github.rb +51 -0
  52. data/lib/sorcery/providers/google.rb +51 -0
  53. data/lib/sorcery/providers/heroku.rb +57 -0
  54. data/lib/sorcery/providers/jira.rb +77 -0
  55. data/lib/sorcery/providers/linkedin.rb +66 -0
  56. data/lib/sorcery/providers/liveid.rb +53 -0
  57. data/lib/sorcery/providers/salesforce.rb +50 -0
  58. data/lib/sorcery/providers/twitter.rb +59 -0
  59. data/lib/sorcery/providers/vk.rb +63 -0
  60. data/lib/sorcery/providers/xing.rb +64 -0
  61. data/lib/sorcery/railties/tasks.rake +1 -7
  62. data/lib/sorcery/test_helpers/internal/rails.rb +17 -6
  63. data/lib/sorcery/test_helpers/internal.rb +27 -6
  64. data/lib/sorcery/test_helpers/rails/controller.rb +21 -0
  65. data/lib/sorcery/test_helpers/rails/integration.rb +26 -0
  66. data/lib/sorcery/version.rb +3 -0
  67. data/lib/sorcery.rb +83 -57
  68. data/sorcery.gemspec +24 -363
  69. data/spec/active_record/user_activation_spec.rb +18 -0
  70. data/spec/active_record/user_activity_logging_spec.rb +17 -0
  71. data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +6 -5
  72. data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +6 -5
  73. data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +5 -4
  74. data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +7 -7
  75. data/spec/active_record/user_spec.rb +37 -0
  76. data/spec/controllers/controller_activity_logging_spec.rb +124 -0
  77. data/spec/controllers/controller_brute_force_protection_spec.rb +43 -0
  78. data/spec/controllers/controller_http_basic_auth_spec.rb +68 -0
  79. data/spec/controllers/controller_oauth2_spec.rb +414 -0
  80. data/spec/controllers/controller_oauth_spec.rb +240 -0
  81. data/spec/controllers/controller_remember_me_spec.rb +117 -0
  82. data/spec/controllers/controller_session_timeout_spec.rb +80 -0
  83. data/spec/controllers/controller_spec.rb +218 -0
  84. data/spec/data_mapper/user_activation_spec.rb +10 -0
  85. data/spec/data_mapper/user_activity_logging_spec.rb +14 -0
  86. data/spec/data_mapper/user_brute_force_protection_spec.rb +9 -0
  87. data/spec/data_mapper/user_oauth_spec.rb +9 -0
  88. data/spec/data_mapper/user_remember_me_spec.rb +8 -0
  89. data/spec/data_mapper/user_reset_password_spec.rb +8 -0
  90. data/spec/data_mapper/user_spec.rb +27 -0
  91. data/spec/mongo_mapper/user_activation_spec.rb +9 -0
  92. data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
  93. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
  94. data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
  95. data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
  96. data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
  97. data/spec/mongo_mapper/user_spec.rb +37 -0
  98. data/spec/mongoid/user_activation_spec.rb +9 -0
  99. data/spec/mongoid/user_activity_logging_spec.rb +8 -0
  100. data/spec/mongoid/user_brute_force_protection_spec.rb +8 -0
  101. data/spec/mongoid/user_oauth_spec.rb +8 -0
  102. data/spec/mongoid/user_remember_me_spec.rb +8 -0
  103. data/spec/mongoid/user_reset_password_spec.rb +8 -0
  104. data/spec/mongoid/user_spec.rb +51 -0
  105. data/spec/orm/active_record.rb +21 -0
  106. data/spec/orm/data_mapper.rb +48 -0
  107. data/spec/orm/mongo_mapper.rb +10 -0
  108. data/spec/orm/mongoid.rb +22 -0
  109. data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
  110. data/spec/rails_app/app/active_record/user_provider.rb +3 -0
  111. data/spec/rails_app/app/controllers/sorcery_controller.rb +285 -0
  112. data/spec/rails_app/app/data_mapper/authentication.rb +8 -0
  113. data/spec/rails_app/app/data_mapper/user.rb +7 -0
  114. data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +2 -0
  115. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
  116. data/spec/rails_app/app/views/sorcery_mailer/send_unlock_token_email.text.erb +1 -0
  117. data/spec/{rails3_mongo_mapper → rails_app}/config/application.rb +13 -8
  118. data/spec/rails_app/config/boot.rb +4 -0
  119. data/spec/rails_app/config/database.yml +22 -0
  120. data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
  121. data/spec/{rails3_mongoid → rails_app}/config/initializers/session_store.rb +4 -0
  122. data/spec/rails_app/config/routes.rb +51 -0
  123. data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
  124. data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
  125. data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +2 -0
  126. data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +2 -2
  127. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
  128. data/spec/rails_app/log/development.log +1791 -0
  129. data/spec/shared_examples/user_activation_shared_examples.rb +137 -98
  130. data/spec/shared_examples/user_activity_logging_shared_examples.rb +86 -13
  131. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +140 -21
  132. data/spec/shared_examples/user_oauth_shared_examples.rb +21 -16
  133. data/spec/shared_examples/user_remember_me_shared_examples.rb +36 -24
  134. data/spec/shared_examples/user_reset_password_shared_examples.rb +163 -130
  135. data/spec/shared_examples/user_shared_examples.rb +355 -193
  136. data/spec/sorcery_crypto_providers_spec.rb +74 -72
  137. data/spec/spec_helper.rb +32 -4
  138. metadata +258 -425
  139. data/Gemfile.lock +0 -192
  140. data/README.rdoc +0 -261
  141. data/VERSION +0 -1
  142. data/lib/sorcery/controller/submodules/external/protocols/oauth1.rb +0 -35
  143. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +0 -45
  144. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +0 -97
  145. data/lib/sorcery/controller/submodules/external/providers/github.rb +0 -91
  146. data/lib/sorcery/controller/submodules/external/providers/google.rb +0 -90
  147. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +0 -101
  148. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +0 -91
  149. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +0 -92
  150. data/lib/sorcery/controller/submodules/external/providers/vk.rb +0 -99
  151. data/lib/sorcery/model/adapters/active_record.rb +0 -49
  152. data/lib/sorcery/model/adapters/mongo_mapper.rb +0 -56
  153. data/lib/sorcery/model/adapters/mongoid.rb +0 -88
  154. data/lib/sorcery/test_helpers/rails.rb +0 -16
  155. data/lib/sorcery/test_helpers.rb +0 -5
  156. data/spec/Gemfile +0 -12
  157. data/spec/Gemfile.lock +0 -129
  158. data/spec/README.md +0 -31
  159. data/spec/Rakefile +0 -12
  160. data/spec/rails3/.gitignore +0 -4
  161. data/spec/rails3/.rspec +0 -1
  162. data/spec/rails3/Gemfile +0 -15
  163. data/spec/rails3/Gemfile.lock +0 -162
  164. data/spec/rails3/README +0 -256
  165. data/spec/rails3/Rakefile +0 -11
  166. data/spec/rails3/app/controllers/application_controller.rb +0 -208
  167. data/spec/rails3/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -1
  168. data/spec/rails3/config/application.rb +0 -46
  169. data/spec/rails3/config/boot.rb +0 -13
  170. data/spec/rails3/config/database.yml +0 -27
  171. data/spec/rails3/config/environments/development.rb +0 -26
  172. data/spec/rails3/config/environments/in_memory.rb +0 -35
  173. data/spec/rails3/config/environments/production.rb +0 -49
  174. data/spec/rails3/config/environments/test.rb +0 -35
  175. data/spec/rails3/config/initializers/session_store.rb +0 -8
  176. data/spec/rails3/config/routes.rb +0 -59
  177. data/spec/rails3/config.ru +0 -4
  178. data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  179. data/spec/rails3/lib/tasks/.gitkeep +0 -0
  180. data/spec/rails3/public/404.html +0 -26
  181. data/spec/rails3/public/422.html +0 -26
  182. data/spec/rails3/public/500.html +0 -26
  183. data/spec/rails3/public/favicon.ico +0 -0
  184. data/spec/rails3/public/images/rails.png +0 -0
  185. data/spec/rails3/public/javascripts/application.js +0 -2
  186. data/spec/rails3/public/javascripts/controls.js +0 -965
  187. data/spec/rails3/public/javascripts/dragdrop.js +0 -974
  188. data/spec/rails3/public/javascripts/effects.js +0 -1123
  189. data/spec/rails3/public/javascripts/prototype.js +0 -6001
  190. data/spec/rails3/public/javascripts/rails.js +0 -175
  191. data/spec/rails3/public/robots.txt +0 -5
  192. data/spec/rails3/public/stylesheets/.gitkeep +0 -0
  193. data/spec/rails3/script/rails +0 -6
  194. data/spec/rails3/spec/controller_activity_logging_spec.rb +0 -115
  195. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -88
  196. data/spec/rails3/spec/controller_http_basic_auth_spec.rb +0 -50
  197. data/spec/rails3/spec/controller_oauth2_spec.rb +0 -380
  198. data/spec/rails3/spec/controller_oauth_spec.rb +0 -206
  199. data/spec/rails3/spec/controller_remember_me_spec.rb +0 -96
  200. data/spec/rails3/spec/controller_session_timeout_spec.rb +0 -55
  201. data/spec/rails3/spec/controller_spec.rb +0 -177
  202. data/spec/rails3/spec/integration_spec.rb +0 -23
  203. data/spec/rails3/spec/spec.opts +0 -2
  204. data/spec/rails3/spec/spec_helper.orig.rb +0 -27
  205. data/spec/rails3/spec/spec_helper.rb +0 -71
  206. data/spec/rails3/spec/user_activation_spec.rb +0 -16
  207. data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
  208. data/spec/rails3/spec/user_spec.rb +0 -36
  209. data/spec/rails3/vendor/plugins/.gitkeep +0 -0
  210. data/spec/rails3_mongo_mapper/.gitignore +0 -4
  211. data/spec/rails3_mongo_mapper/.rspec +0 -1
  212. data/spec/rails3_mongo_mapper/Gemfile +0 -16
  213. data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
  214. data/spec/rails3_mongo_mapper/Rakefile +0 -11
  215. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
  216. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
  217. data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
  218. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
  219. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  220. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  221. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  222. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  223. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  224. data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
  225. data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
  226. data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
  227. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  228. data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
  229. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
  230. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
  231. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
  232. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
  233. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
  234. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
  235. data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
  236. data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
  237. data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
  238. data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
  239. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  240. data/spec/rails3_mongo_mapper/public/404.html +0 -26
  241. data/spec/rails3_mongo_mapper/public/422.html +0 -26
  242. data/spec/rails3_mongo_mapper/public/500.html +0 -26
  243. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  244. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  245. data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
  246. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
  247. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
  248. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
  249. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
  250. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
  251. data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
  252. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  253. data/spec/rails3_mongo_mapper/script/rails +0 -6
  254. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +0 -170
  255. data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
  256. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
  257. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
  258. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
  259. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
  260. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
  261. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
  262. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
  263. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
  264. data/spec/rails3_mongo_mapper/spec/user_spec.rb +0 -37
  265. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  266. data/spec/rails3_mongoid/.gitignore +0 -4
  267. data/spec/rails3_mongoid/.rspec +0 -1
  268. data/spec/rails3_mongoid/Gemfile +0 -15
  269. data/spec/rails3_mongoid/Gemfile.lock +0 -146
  270. data/spec/rails3_mongoid/Rakefile +0 -11
  271. data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
  272. data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
  273. data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
  274. data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
  275. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  276. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  277. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  278. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  279. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  280. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  281. data/spec/rails3_mongoid/config/application.rb +0 -51
  282. data/spec/rails3_mongoid/config/boot.rb +0 -13
  283. data/spec/rails3_mongoid/config/environment.rb +0 -5
  284. data/spec/rails3_mongoid/config/environments/development.rb +0 -26
  285. data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
  286. data/spec/rails3_mongoid/config/environments/production.rb +0 -49
  287. data/spec/rails3_mongoid/config/environments/test.rb +0 -35
  288. data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
  289. data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
  290. data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
  291. data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
  292. data/spec/rails3_mongoid/config/locales/en.yml +0 -5
  293. data/spec/rails3_mongoid/config/mongoid.yml +0 -7
  294. data/spec/rails3_mongoid/config/routes.rb +0 -59
  295. data/spec/rails3_mongoid/config.ru +0 -4
  296. data/spec/rails3_mongoid/db/schema.rb +0 -23
  297. data/spec/rails3_mongoid/db/seeds.rb +0 -7
  298. data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
  299. data/spec/rails3_mongoid/public/404.html +0 -26
  300. data/spec/rails3_mongoid/public/422.html +0 -26
  301. data/spec/rails3_mongoid/public/500.html +0 -26
  302. data/spec/rails3_mongoid/public/favicon.ico +0 -0
  303. data/spec/rails3_mongoid/public/images/rails.png +0 -0
  304. data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
  305. data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
  306. data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
  307. data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
  308. data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
  309. data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
  310. data/spec/rails3_mongoid/public/robots.txt +0 -5
  311. data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
  312. data/spec/rails3_mongoid/script/rails +0 -6
  313. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +0 -105
  314. data/spec/rails3_mongoid/spec/controller_spec.rb +0 -181
  315. data/spec/rails3_mongoid/spec/spec.opts +0 -2
  316. data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
  317. data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
  318. data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
  319. data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
  320. data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
  321. data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
  322. data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
  323. data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
  324. data/spec/rails3_mongoid/spec/user_spec.rb +0 -38
  325. data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
  326. data/spec/shared_examples/controller_oauth2_shared_examples.rb +0 -56
  327. data/spec/shared_examples/controller_oauth_shared_examples.rb +0 -55
  328. /data/lib/sorcery/{controller/submodules/external/protocols → protocols}/certs/ca-bundle.crt +0 -0
  329. /data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
  330. /data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
  331. /data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
  332. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
  333. /data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
  334. /data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
  335. /data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
  336. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
  337. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
  338. /data/spec/{rails3/app/views/sorcery_mailer/activation_success_email.html.erb → rails_app/app/views/sorcery_mailer/activation_needed_email.html.erb} +0 -0
  339. /data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  340. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  341. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  342. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  343. /data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
  344. /data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
  345. /data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
  346. /data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
  347. /data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
  348. /data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
  349. /data/spec/{rails3 → rails_app}/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
  350. /data/spec/{rails3 → rails_app}/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
  351. /data/spec/{rails3 → rails_app}/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
  352. /data/spec/{rails3 → rails_app}/db/schema.rb +0 -0
  353. /data/spec/{rails3 → rails_app}/db/seeds.rb +0 -0
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_shared_examples'
4
+
5
+ describe User, "with no submodules (core)", :mongoid => true do
6
+ before(:all) do
7
+ sorcery_reload!
8
+ end
9
+
10
+ context "when app has plugin loaded" do
11
+ it "User responds to .authenticates_with_sorcery!" do
12
+ expect(User).to respond_to :authenticates_with_sorcery!
13
+ end
14
+ end
15
+
16
+ # ----------------- PLUGIN CONFIGURATION -----------------------
17
+
18
+ it_should_behave_like "rails_3_core_model"
19
+
20
+ describe "external users" do
21
+
22
+ it_should_behave_like "external_user"
23
+
24
+ end
25
+
26
+ context "when inherited" do
27
+ it "inherits mongoid fields" do
28
+ User.class_eval do
29
+ field :blabla
30
+ end
31
+ class SubUser < User
32
+ end
33
+
34
+ expect(SubUser.fields).to include("blabla")
35
+ end
36
+ end
37
+
38
+ describe "increment" do
39
+ it "increments attribute" do
40
+ User.class_eval do
41
+ field :some_number, type: Integer
42
+ end
43
+
44
+ user = User.new(some_number: 3)
45
+ user.sorcery_adapter.increment(:some_number)
46
+
47
+ expect(user.some_number).to eql 4
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,21 @@
1
+ require 'sorcery'
2
+
3
+ ActiveRecord::Migration.verbose = false
4
+ # ActiveRecord::Base.logger = Logger.new(nil)
5
+ # ActiveRecord::Base.include_root_in_json = true
6
+
7
+ class TestUser < ActiveRecord::Base
8
+ authenticates_with_sorcery!
9
+ end
10
+
11
+ def setup_orm
12
+ ActiveRecord::Migrator.migrate(migrations_path)
13
+ end
14
+
15
+ def teardown_orm
16
+ ActiveRecord::Migrator.rollback(migrations_path)
17
+ end
18
+
19
+ def migrations_path
20
+ Rails.root.join("db", "migrate", "core")
21
+ end
@@ -0,0 +1,48 @@
1
+ require 'data_mapper'
2
+ require 'dm-migrations'
3
+ require 'sorcery'
4
+
5
+ #DataMapper.setup(:default, 'sqlite::memory:')
6
+ # NOTE
7
+ # 1. Problems with Time fields, hh mm ss values.
8
+ #DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/../rails_app/test.sqlite3")
9
+
10
+ # MySQL
11
+ # NOTE
12
+ # 1. Create test database.
13
+ # 2. DM creates tables case insensitive by default.
14
+ # -
15
+ #DataMapper.setup(:default, "mysql://root:<password>@localhost/sorcery_test")
16
+ DataMapper.setup(:default, "mysql://root@127.0.0.1/sorcery_test")
17
+
18
+ # Redis
19
+ # NOTE
20
+ # 1. Submodule activity_logging is not supported.
21
+ # 2. case sensitive.
22
+ #DataMapper.setup(:default, {
23
+ # :adapter => 'redis',
24
+ # :host => 'localhost',
25
+ # :port => 6379,
26
+ #})
27
+
28
+ class TestUser
29
+ include DataMapper::Resource
30
+ property :id, Serial
31
+ authenticates_with_sorcery!
32
+ end
33
+
34
+ def setup_orm
35
+ TestUser.finalize
36
+ DataMapper.auto_migrate!
37
+ end
38
+
39
+ module Sorcery
40
+ module TestHelpers
41
+ module Internal
42
+ def update_model(&block)
43
+ User.class_exec(&block)
44
+ User.finalize
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ require 'mongo_mapper'
2
+ require 'sorcery'
3
+
4
+ MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
5
+ MongoMapper.database = "sorcery_mongomapper_test"
6
+
7
+ class TestUser
8
+ include MongoMapper::Document
9
+ authenticates_with_sorcery!
10
+ end
@@ -0,0 +1,22 @@
1
+ require 'mongoid'
2
+ require 'sorcery'
3
+
4
+ Mongoid.configure do |config|
5
+ database = "sorcery_mongoid_test"
6
+ if config.respond_to?(:connect_to)
7
+ config.connect_to(database)
8
+ else
9
+ config.master = Mongo::Connection.new.db(database)
10
+ end
11
+
12
+ config.use_utc = true
13
+ config.include_root_in_json = true
14
+ end
15
+
16
+ class TestUser
17
+ include Mongoid::Document
18
+ end
19
+
20
+ def setup_orm
21
+ Mongoid.purge!
22
+ end
@@ -1,6 +1,5 @@
1
1
  class User < ActiveRecord::Base
2
- attr_accessible :email, :password, :password_confirmation, :authentications_attributes
3
-
4
2
  has_many :authentications, :dependent => :destroy
3
+ has_many :user_providers, :dependent => :destroy
5
4
  accepts_nested_attributes_for :authentications
6
5
  end
@@ -0,0 +1,3 @@
1
+ class UserProvider < ActiveRecord::Base
2
+ belongs_to :user
3
+ end
@@ -0,0 +1,285 @@
1
+ require 'oauth'
2
+
3
+ class SorceryController < ActionController::Base
4
+ protect_from_forgery
5
+
6
+ before_filter :require_login_from_http_basic, only: [:test_http_basic_auth]
7
+ before_filter :require_login, only: [:test_logout, :test_should_be_logged_in, :some_action]
8
+
9
+ def index
10
+ end
11
+
12
+ def some_action
13
+ render nothing: true
14
+ end
15
+
16
+ def some_action_making_a_non_persisted_change_to_the_user
17
+ current_user.email = 'to_be_ignored'
18
+ render nothing: true
19
+ end
20
+
21
+ def test_login
22
+ @user = login(params[:email], params[:password])
23
+ render nothing: true
24
+ end
25
+
26
+ def test_auto_login
27
+ @user = User.first
28
+ auto_login(@user)
29
+ @result = current_user
30
+ render nothing: true
31
+ end
32
+
33
+ def test_return_to
34
+ @user = login(params[:email], params[:password])
35
+ redirect_back_or_to(:index, notice: 'haha!')
36
+ end
37
+
38
+ def test_logout
39
+ logout
40
+ render nothing: true
41
+ end
42
+
43
+ def test_logout_with_remember
44
+ remember_me!
45
+ logout
46
+ render nothing: true
47
+ end
48
+
49
+ def test_login_with_remember
50
+ @user = login(params[:email], params[:password])
51
+ remember_me!
52
+
53
+ render nothing: true
54
+ end
55
+
56
+ def test_login_with_remember_in_login
57
+ @user = login(params[:email], params[:password], params[:remember])
58
+
59
+ render nothing: true
60
+ end
61
+
62
+ def test_login_from_cookie
63
+ @user = current_user
64
+ render nothing: true
65
+ end
66
+
67
+ def test_not_authenticated_action
68
+ render text: 'test_not_authenticated_action'
69
+ end
70
+
71
+ def test_should_be_logged_in
72
+ render nothing: true
73
+ end
74
+
75
+ def test_http_basic_auth
76
+ render text: 'HTTP Basic Auth'
77
+ end
78
+
79
+ def login_at_test_twitter
80
+ login_at(:twitter)
81
+ end
82
+
83
+ alias :login_at_test :login_at_test_twitter
84
+
85
+ def login_at_test_facebook
86
+ login_at(:facebook)
87
+ end
88
+
89
+ def login_at_test_github
90
+ login_at(:github)
91
+ end
92
+
93
+ def login_at_test_google
94
+ login_at(:google)
95
+ end
96
+
97
+ def login_at_test_liveid
98
+ login_at(:liveid)
99
+ end
100
+
101
+ def login_at_test_jira
102
+ login_at(:jira)
103
+ end
104
+
105
+ def login_at_test_vk
106
+ login_at(:vk)
107
+ end
108
+
109
+ def login_at_test_salesforce
110
+ login_at(:salesforce)
111
+ end
112
+
113
+ def login_at_test_with_state
114
+ login_at(:facebook, {state: 'bla'})
115
+ end
116
+
117
+ def test_login_from_twitter
118
+ if @user = login_from(:twitter)
119
+ redirect_to 'bla', notice: 'Success!'
120
+ else
121
+ redirect_to 'blu', alert: 'Failed!'
122
+ end
123
+ end
124
+
125
+ alias :test_login_from :test_login_from_twitter
126
+
127
+ def test_login_from_facebook
128
+ if @user = login_from(:facebook)
129
+ redirect_to 'bla', notice: 'Success!'
130
+ else
131
+ redirect_to 'blu', alert: 'Failed!'
132
+ end
133
+ end
134
+
135
+ def test_login_from_github
136
+ if @user = login_from(:github)
137
+ redirect_to 'bla', notice: 'Success!'
138
+ else
139
+ redirect_to 'blu', alert: 'Failed!'
140
+ end
141
+ end
142
+
143
+ def test_login_from_google
144
+ if @user = login_from(:google)
145
+ redirect_to 'bla', notice: 'Success!'
146
+ else
147
+ redirect_to 'blu', alert: 'Failed!'
148
+ end
149
+ end
150
+
151
+ def test_login_from_liveid
152
+ if @user = login_from(:liveid)
153
+ redirect_to 'bla', notice: 'Success!'
154
+ else
155
+ redirect_to 'blu', alert: 'Failed!'
156
+ end
157
+ end
158
+
159
+ def test_login_from_vk
160
+ if @user = login_from(:vk)
161
+ redirect_to 'bla', notice: 'Success!'
162
+ else
163
+ redirect_to 'blu', alert: 'Failed!'
164
+ end
165
+ end
166
+
167
+ def test_login_from_jira
168
+ if @user = login_from(:jira)
169
+ redirect_to 'bla', notice: 'Success!'
170
+ else
171
+ redirect_to 'blu', alert: 'Failed!'
172
+ end
173
+ end
174
+
175
+ def test_login_from_salesforce
176
+ if @user = login_from(:salesforce)
177
+ redirect_to 'bla', notice: 'Success!'
178
+ else
179
+ redirect_to 'blu', alert: 'Failed!'
180
+ end
181
+ end
182
+
183
+ def test_return_to_with_external_twitter
184
+ if @user = login_from(:twitter)
185
+ redirect_back_or_to 'bla', notice: 'Success!'
186
+ else
187
+ redirect_to 'blu', alert: 'Failed!'
188
+ end
189
+ end
190
+
191
+ def test_return_to_with_external_jira
192
+ if @user = login_from(:jira)
193
+ redirect_back_or_to 'bla', notice: 'Success!'
194
+ else
195
+ redirect_to 'blu', alert: 'Failed!'
196
+ end
197
+ end
198
+
199
+ alias :test_return_to_with_external :test_return_to_with_external_twitter
200
+
201
+ def test_return_to_with_external_facebook
202
+ if @user = login_from(:facebook)
203
+ redirect_back_or_to 'bla', notice: 'Success!'
204
+ else
205
+ redirect_to 'blu', alert: 'Failed!'
206
+ end
207
+ end
208
+
209
+ def test_return_to_with_external_github
210
+ if @user = login_from(:github)
211
+ redirect_back_or_to 'bla', notice: 'Success!'
212
+ else
213
+ redirect_to 'blu', alert: 'Failed!'
214
+ end
215
+ end
216
+
217
+ def test_return_to_with_external_google
218
+ if @user = login_from(:google)
219
+ redirect_back_or_to 'bla', notice: 'Success!'
220
+ else
221
+ redirect_to 'blu', alert: 'Failed!'
222
+ end
223
+ end
224
+
225
+ def test_return_to_with_external_liveid
226
+ if @user = login_from(:liveid)
227
+ redirect_back_or_to 'bla', notice: 'Success!'
228
+ else
229
+ redirect_to 'blu', alert: 'Failed!'
230
+ end
231
+ end
232
+
233
+ def test_return_to_with_external_vk
234
+ if @user = login_from(:vk)
235
+ redirect_back_or_to 'bla', notice: 'Success!'
236
+ else
237
+ redirect_to 'blu', alert: 'Failed!'
238
+ end
239
+ end
240
+
241
+ def test_return_to_with_external_salesforce
242
+ if @user = login_from(:salesforce)
243
+ redirect_back_or_to 'bla', notice: 'Success!'
244
+ else
245
+ redirect_to 'blu', alert: 'Failed!'
246
+ end
247
+ end
248
+
249
+ def test_create_from_provider
250
+ provider = params[:provider]
251
+ login_from(provider)
252
+ if @user = create_from(provider)
253
+ redirect_to 'bla', notice: 'Success!'
254
+ else
255
+ redirect_to 'blu', alert: 'Failed!'
256
+ end
257
+ end
258
+
259
+ def test_add_second_provider
260
+ provider = params[:provider]
261
+ if logged_in?
262
+ if @user = add_provider_to_user(provider)
263
+ redirect_to "bla", :notice => "Success!"
264
+ else
265
+ redirect_to "blu", :alert => "Failed!"
266
+ end
267
+ end
268
+ end
269
+
270
+ def test_create_from_provider_with_block
271
+ provider = params[:provider]
272
+ login_from(provider)
273
+ @user = create_from(provider) do |user|
274
+ # check uniqueness of email
275
+ # User.where(email: user.email).empty?
276
+ false
277
+ end
278
+ if @user
279
+ redirect_to 'bla', notice: 'Success!'
280
+ else
281
+ redirect_to 'blu', alert: 'Failed!'
282
+ end
283
+ end
284
+
285
+ end
@@ -0,0 +1,8 @@
1
+ class Authentication
2
+ include DataMapper::Resource
3
+
4
+ property :id, Serial
5
+ property :uid, Integer
6
+ property :provider, String
7
+ belongs_to :user
8
+ end
@@ -0,0 +1,7 @@
1
+ class User
2
+ include DataMapper::Resource
3
+ property :id, Serial
4
+ property :username, String
5
+
6
+ has n, :authentications, :constraint => :destroy
7
+ end
@@ -1,5 +1,7 @@
1
1
  class User
2
2
  include MongoMapper::Document
3
3
 
4
+ key :username
5
+
4
6
  many :authentications, :dependent => :destroy
5
7
  end
@@ -1,5 +1,7 @@
1
1
  class User
2
2
  include Mongoid::Document
3
3
 
4
+ field :username, type: String
5
+
4
6
  has_many :authentications, :dependent => :destroy
5
7
  end
@@ -0,0 +1 @@
1
+ Please visit <%= @url %> for unlock your account.
@@ -2,17 +2,22 @@ require File.expand_path('../boot', __FILE__)
2
2
 
3
3
  require "action_controller/railtie"
4
4
  require "action_mailer/railtie"
5
- require "active_resource/railtie"
6
5
  require "rails/test_unit/railtie"
7
6
 
8
- require "mongo_mapper"
7
+ Bundler.require :default, SORCERY_ORM
9
8
 
10
- # If you have a Gemfile, require the gems listed there, including any gems
11
- # you've limited to :test, :development, or :production.
12
- Bundler.require(:default, Rails.env) if defined?(Bundler)
9
+ begin
10
+ require "#{SORCERY_ORM}/railtie"
11
+ rescue LoadError
12
+ end
13
+
14
+ require "sorcery"
13
15
 
14
16
  module AppRoot
15
17
  class Application < Rails::Application
18
+ config.autoload_paths.reject!{ |p| p =~ /\/app\/(\w+)$/ && !%w(controllers helpers mailers views).include?($1) }
19
+ config.autoload_paths += [ "#{config.root}/app/#{SORCERY_ORM}" ]
20
+
16
21
  # Settings in config/environments/* take precedence over those specified here.
17
22
  # Application configuration should go into files in config/initializers
18
23
  # -- all .rb files in that directory are automatically loaded.
@@ -43,9 +48,9 @@ module AppRoot
43
48
 
44
49
  # Configure sensitive parameters which will be filtered from the log file.
45
50
  config.filter_parameters += [:password]
46
-
51
+
47
52
  config.action_mailer.delivery_method = :test
48
-
53
+
49
54
  config.active_support.deprecation = :stderr
50
55
  end
51
- end
56
+ end
@@ -0,0 +1,4 @@
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
@@ -0,0 +1,22 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3-ruby (not necessary on OS X Leopard)
3
+ development:
4
+ adapter: sqlite3
5
+ database: db/development.sqlite3
6
+ pool: 5
7
+ timeout: 5000
8
+
9
+ # Warning: The database defined as "test" will be erased and
10
+ # re-generated from your development database when you run "rake".
11
+ # Do not set this db to the same as development or production.
12
+ test:
13
+ adapter: sqlite3
14
+ database: db/test.sqlite3
15
+ pool: 5
16
+ timeout: 5000
17
+ # adapter: sqlite3
18
+ # database: ":memory:"
19
+
20
+ production:
21
+ adapter: sqlite3
22
+ database: ":memory:"
@@ -32,4 +32,6 @@ AppRoot::Application.configure do
32
32
 
33
33
  # Print deprecation notices to the stderr
34
34
  config.active_support.deprecation = :stderr
35
+
36
+ config.eager_load = false
35
37
  end
@@ -6,3 +6,7 @@ AppRoot::Application.config.session_store :cookie_store, :key => '_app_root_sess
6
6
  # which shouldn't be used to store highly confidential information
7
7
  # (create the session table with "rails generate session_migration")
8
8
  # AppRoot::Application.config.session_store :active_record_store
9
+
10
+ if AppRoot::Application.config.respond_to?(:secret_key_base=)
11
+ AppRoot::Application.config.secret_key_base = "foobar"
12
+ end
@@ -0,0 +1,51 @@
1
+ AppRoot::Application.routes.draw do
2
+ root :to => "application#index"
3
+
4
+ controller :sorcery do
5
+ get :test_login
6
+ get :test_logout
7
+ get :some_action
8
+ post :test_return_to
9
+ get :test_auto_login
10
+ post :test_login_with_remember_in_login
11
+ get :test_login_from_cookie
12
+ get :test_login_from
13
+ get :test_logout_with_remember
14
+ get :test_should_be_logged_in
15
+ get :test_create_from_provider
16
+ get :test_add_second_provider
17
+ get :test_return_to_with_external
18
+ get :test_login_from
19
+ get :test_login_from_twitter
20
+ get :test_login_from_facebook
21
+ get :test_login_from_github
22
+ get :test_login_from_google
23
+ get :test_login_from_liveid
24
+ get :test_login_from_vk
25
+ get :test_login_from_jira
26
+ get :test_login_from_salesforce
27
+ get :login_at_test
28
+ get :login_at_test_twitter
29
+ get :login_at_test_facebook
30
+ get :login_at_test_github
31
+ get :login_at_test_google
32
+ get :login_at_test_liveid
33
+ get :login_at_test_vk
34
+ get :login_at_test_jira
35
+ get :login_at_test_salesforce
36
+ get :test_return_to_with_external
37
+ get :test_return_to_with_external_twitter
38
+ get :test_return_to_with_external_facebook
39
+ get :test_return_to_with_external_github
40
+ get :test_return_to_with_external_google
41
+ get :test_return_to_with_external_liveid
42
+ get :test_return_to_with_external_vk
43
+ get :test_return_to_with_external_jira
44
+ get :test_return_to_with_external_salesforce
45
+ get :test_http_basic_auth
46
+ get :some_action_making_a_non_persisted_change_to_the_user
47
+ post :test_login_with_remember
48
+ get :test_create_from_provider_with_block
49
+ get :login_at_test_with_state
50
+ end
51
+ end
@@ -1,4 +1,4 @@
1
1
  # This file is used by Rack-based servers to start the application.
2
2
 
3
3
  require ::File.expand_path('../config/environment', __FILE__)
4
- run AppRoot::Application
4
+ run RailsApp::Application
@@ -3,15 +3,15 @@ class AddActivationToUsers < ActiveRecord::Migration
3
3
  add_column :users, :activation_state, :string, :default => nil
4
4
  add_column :users, :activation_token, :string, :default => nil
5
5
  add_column :users, :activation_token_expires_at, :datetime, :default => nil
6
-
6
+
7
7
  add_index :users, :activation_token
8
8
  end
9
9
 
10
10
  def self.down
11
11
  remove_index :users, :activation_token
12
-
12
+
13
13
  remove_column :users, :activation_token_expires_at
14
14
  remove_column :users, :activation_token
15
15
  remove_column :users, :activation_state
16
16
  end
17
- end
17
+ end
@@ -3,6 +3,7 @@ class AddActivityLoggingToUsers < ActiveRecord::Migration
3
3
  add_column :users, :last_login_at, :datetime, :default => nil
4
4
  add_column :users, :last_logout_at, :datetime, :default => nil
5
5
  add_column :users, :last_activity_at, :datetime, :default => nil
6
+ add_column :users, :last_login_from_ip_address, :string, :default => nil
6
7
 
7
8
  add_index :users, [:last_logout_at, :last_activity_at]
8
9
  end
@@ -13,5 +14,6 @@ class AddActivityLoggingToUsers < ActiveRecord::Migration
13
14
  remove_column :users, :last_activity_at
14
15
  remove_column :users, :last_logout_at
15
16
  remove_column :users, :last_login_at
17
+ remove_column :users, :last_login_from_ip_address
16
18
  end
17
19
  end
@@ -3,8 +3,8 @@ class CreateUsers < ActiveRecord::Migration
3
3
  create_table :users do |t|
4
4
  t.string :username, :null => false
5
5
  t.string :email, :default => nil
6
- t.string :crypted_password, :default => nil
7
- t.string :salt, :default => nil
6
+ t.string :crypted_password
7
+ t.string :salt
8
8
 
9
9
  t.timestamps
10
10
  end