sorcery 0.8.4 → 0.8.6

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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +55 -0
  3. data/.travis.yml +69 -1
  4. data/CHANGELOG.md +248 -0
  5. data/Gemfile +16 -22
  6. data/Gemfile.rails4 +22 -0
  7. data/README.md +320 -0
  8. data/Rakefile +3 -79
  9. data/VERSION +1 -1
  10. data/gemfiles/active_record-rails41.gemfile +6 -0
  11. data/gemfiles/mongo_mapper-rails41.gemfile +8 -0
  12. data/gemfiles/mongoid-rails41.gemfile +11 -0
  13. data/lib/generators/sorcery/helpers.rb +40 -0
  14. data/lib/generators/sorcery/install_generator.rb +21 -17
  15. data/lib/generators/sorcery/templates/initializer.rb +1 -1
  16. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -11
  17. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -7
  18. data/lib/generators/sorcery/templates/migration/core.rb +5 -8
  19. data/lib/generators/sorcery/templates/migration/external.rb +1 -5
  20. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -9
  21. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -10
  22. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -10
  23. data/lib/sorcery/controller/submodules/external.rb +39 -23
  24. data/lib/sorcery/controller/submodules/remember_me.rb +1 -1
  25. data/lib/sorcery/controller/submodules/session_timeout.rb +2 -2
  26. data/lib/sorcery/controller.rb +18 -11
  27. data/lib/sorcery/model/adapters/active_record.rb +7 -2
  28. data/lib/sorcery/model/adapters/datamapper.rb +123 -0
  29. data/lib/sorcery/model/adapters/mongo_mapper.rb +8 -4
  30. data/lib/sorcery/model/adapters/mongoid.rb +8 -8
  31. data/lib/sorcery/model/submodules/activity_logging.rb +24 -0
  32. data/lib/sorcery/model/submodules/brute_force_protection.rb +22 -8
  33. data/lib/sorcery/model/submodules/remember_me.rb +19 -4
  34. data/lib/sorcery/model/submodules/reset_password.rb +35 -14
  35. data/lib/sorcery/model/submodules/user_activation.rb +69 -24
  36. data/lib/sorcery/model.rb +111 -73
  37. data/lib/sorcery/protocols/oauth.rb +42 -0
  38. data/lib/sorcery/protocols/oauth2.rb +47 -0
  39. data/lib/sorcery/providers/base.rb +27 -0
  40. data/lib/sorcery/providers/facebook.rb +63 -0
  41. data/lib/sorcery/providers/github.rb +51 -0
  42. data/lib/sorcery/providers/google.rb +51 -0
  43. data/lib/sorcery/providers/linkedin.rb +66 -0
  44. data/lib/sorcery/providers/liveid.rb +53 -0
  45. data/lib/sorcery/providers/twitter.rb +59 -0
  46. data/lib/sorcery/providers/vk.rb +61 -0
  47. data/lib/sorcery/providers/xing.rb +64 -0
  48. data/lib/sorcery/test_helpers/internal/rails.rb +17 -6
  49. data/lib/sorcery/test_helpers/internal.rb +23 -6
  50. data/lib/sorcery/test_helpers/rails/controller.rb +17 -0
  51. data/lib/sorcery/test_helpers/rails/integration.rb +26 -0
  52. data/lib/sorcery/test_helpers/rails.rb +1 -10
  53. data/lib/sorcery.rb +20 -28
  54. data/sorcery.gemspec +21 -363
  55. data/spec/active_record/controller_activity_logging_spec.rb +29 -0
  56. data/spec/active_record/controller_brute_force_protection_spec.rb +158 -0
  57. data/spec/active_record/controller_http_basic_auth_spec.rb +65 -0
  58. data/spec/active_record/controller_oauth2_spec.rb +342 -0
  59. data/spec/{rails3/spec → active_record}/controller_oauth_spec.rb +69 -59
  60. data/spec/active_record/controller_remember_me_spec.rb +97 -0
  61. data/spec/active_record/controller_session_timeout_spec.rb +70 -0
  62. data/spec/active_record/controller_spec.rb +8 -0
  63. data/spec/{rails3/spec → active_record}/integration_spec.rb +3 -3
  64. data/spec/active_record/user_activation_spec.rb +18 -0
  65. data/spec/active_record/user_activity_logging_spec.rb +8 -0
  66. data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +6 -5
  67. data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +6 -5
  68. data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +5 -4
  69. data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +7 -7
  70. data/spec/active_record/user_spec.rb +37 -0
  71. data/spec/datamapper/controller_activity_logging_spec.rb +17 -0
  72. data/spec/datamapper/controller_spec.rb +8 -0
  73. data/spec/datamapper/user_activation_spec.rb +10 -0
  74. data/spec/datamapper/user_activity_logging_spec.rb +9 -0
  75. data/spec/datamapper/user_brute_force_protection_spec.rb +9 -0
  76. data/spec/datamapper/user_oauth_spec.rb +9 -0
  77. data/spec/datamapper/user_remember_me_spec.rb +8 -0
  78. data/spec/datamapper/user_reset_password_spec.rb +8 -0
  79. data/spec/datamapper/user_spec.rb +27 -0
  80. data/spec/mongo_mapper/controller_spec.rb +8 -0
  81. data/spec/mongo_mapper/user_activation_spec.rb +9 -0
  82. data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
  83. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
  84. data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
  85. data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
  86. data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
  87. data/spec/mongo_mapper/user_spec.rb +37 -0
  88. data/spec/mongoid/controller_activity_logging_spec.rb +16 -0
  89. data/spec/mongoid/controller_spec.rb +8 -0
  90. data/spec/mongoid/user_activation_spec.rb +9 -0
  91. data/spec/mongoid/user_activity_logging_spec.rb +8 -0
  92. data/spec/mongoid/user_brute_force_protection_spec.rb +8 -0
  93. data/spec/mongoid/user_oauth_spec.rb +8 -0
  94. data/spec/mongoid/user_remember_me_spec.rb +8 -0
  95. data/spec/mongoid/user_reset_password_spec.rb +8 -0
  96. data/spec/mongoid/user_spec.rb +38 -0
  97. data/spec/orm/active_record.rb +9 -0
  98. data/spec/orm/datamapper.rb +34 -0
  99. data/spec/orm/mongo_mapper.rb +11 -0
  100. data/spec/orm/mongoid.rb +18 -0
  101. data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
  102. data/spec/rails_app/app/active_record/user_provider.rb +3 -0
  103. data/spec/rails_app/app/controllers/sorcery_controller.rb +224 -0
  104. data/spec/rails_app/app/datamapper/authentication.rb +8 -0
  105. data/spec/rails_app/app/datamapper/user.rb +7 -0
  106. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
  107. data/spec/{rails3_mongo_mapper → rails_app}/config/application.rb +13 -8
  108. data/spec/rails_app/config/boot.rb +4 -0
  109. data/spec/rails_app/config/database.yml +22 -0
  110. data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
  111. data/spec/{rails3_mongoid → rails_app}/config/initializers/session_store.rb +4 -0
  112. data/spec/rails_app/config/routes.rb +42 -0
  113. data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
  114. data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
  115. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
  116. data/spec/rails_app/log/development.log +1791 -0
  117. data/spec/shared_examples/controller_activity_logging_shared_examples.rb +125 -0
  118. data/spec/shared_examples/controller_oauth2_shared_examples.rb +32 -36
  119. data/spec/shared_examples/controller_oauth_shared_examples.rb +35 -28
  120. data/spec/shared_examples/controller_shared_examples.rb +203 -0
  121. data/spec/shared_examples/user_activation_shared_examples.rb +136 -97
  122. data/spec/shared_examples/user_activity_logging_shared_examples.rb +10 -10
  123. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +14 -13
  124. data/spec/shared_examples/user_oauth_shared_examples.rb +23 -15
  125. data/spec/shared_examples/user_remember_me_shared_examples.rb +32 -23
  126. data/spec/shared_examples/user_reset_password_shared_examples.rb +162 -129
  127. data/spec/shared_examples/user_shared_examples.rb +265 -190
  128. data/spec/sorcery_crypto_providers_spec.rb +74 -72
  129. data/spec/spec_helper.rb +47 -4
  130. metadata +187 -368
  131. data/Gemfile.lock +0 -175
  132. data/README.rdoc +0 -261
  133. data/lib/sorcery/controller/submodules/external/protocols/oauth1.rb +0 -46
  134. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +0 -49
  135. data/lib/sorcery/controller/submodules/external/providers/base.rb +0 -21
  136. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +0 -98
  137. data/lib/sorcery/controller/submodules/external/providers/github.rb +0 -92
  138. data/lib/sorcery/controller/submodules/external/providers/google.rb +0 -91
  139. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +0 -102
  140. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +0 -92
  141. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +0 -93
  142. data/lib/sorcery/controller/submodules/external/providers/vk.rb +0 -100
  143. data/lib/sorcery/controller/submodules/external/providers/xing.rb +0 -97
  144. data/lib/sorcery/test_helpers.rb +0 -5
  145. data/spec/Gemfile +0 -12
  146. data/spec/Gemfile.lock +0 -129
  147. data/spec/README.md +0 -31
  148. data/spec/Rakefile +0 -12
  149. data/spec/rails3/.gitignore +0 -4
  150. data/spec/rails3/.rspec +0 -1
  151. data/spec/rails3/Gemfile +0 -15
  152. data/spec/rails3/Gemfile.lock +0 -162
  153. data/spec/rails3/README +0 -256
  154. data/spec/rails3/Rakefile +0 -11
  155. data/spec/rails3/app/controllers/application_controller.rb +0 -208
  156. data/spec/rails3/config/application.rb +0 -46
  157. data/spec/rails3/config/boot.rb +0 -13
  158. data/spec/rails3/config/database.yml +0 -27
  159. data/spec/rails3/config/environments/development.rb +0 -26
  160. data/spec/rails3/config/environments/in_memory.rb +0 -35
  161. data/spec/rails3/config/environments/production.rb +0 -49
  162. data/spec/rails3/config/environments/test.rb +0 -35
  163. data/spec/rails3/config/initializers/session_store.rb +0 -8
  164. data/spec/rails3/config/routes.rb +0 -59
  165. data/spec/rails3/config.ru +0 -4
  166. data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  167. data/spec/rails3/public/stylesheets/.gitkeep +0 -0
  168. data/spec/rails3/script/rails +0 -6
  169. data/spec/rails3/spec/controller_activity_logging_spec.rb +0 -130
  170. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -96
  171. data/spec/rails3/spec/controller_http_basic_auth_spec.rb +0 -50
  172. data/spec/rails3/spec/controller_oauth2_spec.rb +0 -380
  173. data/spec/rails3/spec/controller_remember_me_spec.rb +0 -96
  174. data/spec/rails3/spec/controller_session_timeout_spec.rb +0 -55
  175. data/spec/rails3/spec/controller_spec.rb +0 -182
  176. data/spec/rails3/spec/spec.opts +0 -2
  177. data/spec/rails3/spec/spec_helper.orig.rb +0 -27
  178. data/spec/rails3/spec/spec_helper.rb +0 -71
  179. data/spec/rails3/spec/user_activation_spec.rb +0 -16
  180. data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
  181. data/spec/rails3/spec/user_spec.rb +0 -36
  182. data/spec/rails3/vendor/plugins/.gitkeep +0 -0
  183. data/spec/rails3_mongo_mapper/.gitignore +0 -4
  184. data/spec/rails3_mongo_mapper/.rspec +0 -1
  185. data/spec/rails3_mongo_mapper/Gemfile +0 -16
  186. data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
  187. data/spec/rails3_mongo_mapper/Rakefile +0 -11
  188. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
  189. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
  190. data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
  191. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
  192. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  193. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  194. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  195. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  196. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  197. data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
  198. data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
  199. data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
  200. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  201. data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
  202. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
  203. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
  204. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
  205. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
  206. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
  207. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
  208. data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
  209. data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
  210. data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
  211. data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
  212. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  213. data/spec/rails3_mongo_mapper/public/404.html +0 -26
  214. data/spec/rails3_mongo_mapper/public/422.html +0 -26
  215. data/spec/rails3_mongo_mapper/public/500.html +0 -26
  216. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  217. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  218. data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
  219. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
  220. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
  221. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
  222. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
  223. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
  224. data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
  225. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  226. data/spec/rails3_mongo_mapper/script/rails +0 -6
  227. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +0 -175
  228. data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
  229. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
  230. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
  231. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
  232. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
  233. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
  234. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
  235. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
  236. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
  237. data/spec/rails3_mongo_mapper/spec/user_spec.rb +0 -37
  238. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  239. data/spec/rails3_mongoid/.gitignore +0 -4
  240. data/spec/rails3_mongoid/.rspec +0 -1
  241. data/spec/rails3_mongoid/Gemfile +0 -15
  242. data/spec/rails3_mongoid/Gemfile.lock +0 -146
  243. data/spec/rails3_mongoid/Rakefile +0 -11
  244. data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
  245. data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
  246. data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
  247. data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
  248. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  249. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  250. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  251. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  252. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  253. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  254. data/spec/rails3_mongoid/config/application.rb +0 -51
  255. data/spec/rails3_mongoid/config/boot.rb +0 -13
  256. data/spec/rails3_mongoid/config/environment.rb +0 -5
  257. data/spec/rails3_mongoid/config/environments/development.rb +0 -26
  258. data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
  259. data/spec/rails3_mongoid/config/environments/production.rb +0 -49
  260. data/spec/rails3_mongoid/config/environments/test.rb +0 -35
  261. data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
  262. data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
  263. data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
  264. data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
  265. data/spec/rails3_mongoid/config/locales/en.yml +0 -5
  266. data/spec/rails3_mongoid/config/mongoid.yml +0 -7
  267. data/spec/rails3_mongoid/config/routes.rb +0 -59
  268. data/spec/rails3_mongoid/config.ru +0 -4
  269. data/spec/rails3_mongoid/db/schema.rb +0 -23
  270. data/spec/rails3_mongoid/db/seeds.rb +0 -7
  271. data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
  272. data/spec/rails3_mongoid/public/404.html +0 -26
  273. data/spec/rails3_mongoid/public/422.html +0 -26
  274. data/spec/rails3_mongoid/public/500.html +0 -26
  275. data/spec/rails3_mongoid/public/favicon.ico +0 -0
  276. data/spec/rails3_mongoid/public/images/rails.png +0 -0
  277. data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
  278. data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
  279. data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
  280. data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
  281. data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
  282. data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
  283. data/spec/rails3_mongoid/public/robots.txt +0 -5
  284. data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
  285. data/spec/rails3_mongoid/script/rails +0 -6
  286. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +0 -111
  287. data/spec/rails3_mongoid/spec/controller_spec.rb +0 -186
  288. data/spec/rails3_mongoid/spec/spec.opts +0 -2
  289. data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
  290. data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
  291. data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
  292. data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
  293. data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
  294. data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
  295. data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
  296. data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
  297. data/spec/rails3_mongoid/spec/user_spec.rb +0 -38
  298. data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
  299. /data/lib/sorcery/{controller/submodules/external/protocols → protocols}/certs/ca-bundle.crt +0 -0
  300. /data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
  301. /data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
  302. /data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
  303. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
  304. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +0 -0
  305. /data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
  306. /data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
  307. /data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
  308. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
  309. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
  310. /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
  311. /data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  312. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  313. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  314. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  315. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -0
  316. /data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
  317. /data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
  318. /data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
  319. /data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
  320. /data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
  321. /data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
  322. /data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
  323. /data/spec/{rails3 → rails_app}/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
  324. /data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +0 -0
  325. /data/spec/{rails3 → rails_app}/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
  326. /data/spec/{rails3 → rails_app}/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
  327. /data/spec/{rails3 → rails_app}/db/schema.rb +0 -0
  328. /data/spec/{rails3 → rails_app}/db/seeds.rb +0 -0
  329. /data/spec/{rails3 → rails_app}/public/404.html +0 -0
  330. /data/spec/{rails3 → rails_app}/public/422.html +0 -0
  331. /data/spec/{rails3 → rails_app}/public/500.html +0 -0
  332. /data/spec/{rails3 → rails_app}/public/favicon.ico +0 -0
  333. /data/spec/{rails3 → rails_app}/public/images/rails.png +0 -0
  334. /data/spec/{rails3 → rails_app}/public/javascripts/application.js +0 -0
  335. /data/spec/{rails3 → rails_app}/public/javascripts/controls.js +0 -0
  336. /data/spec/{rails3 → rails_app}/public/javascripts/dragdrop.js +0 -0
  337. /data/spec/{rails3 → rails_app}/public/javascripts/effects.js +0 -0
  338. /data/spec/{rails3 → rails_app}/public/javascripts/prototype.js +0 -0
  339. /data/spec/{rails3 → rails_app}/public/javascripts/rails.js +0 -0
  340. /data/spec/{rails3 → rails_app}/public/robots.txt +0 -0
  341. /data/spec/{rails3/lib/tasks → rails_app/public/stylesheets}/.gitkeep +0 -0
data/README.md ADDED
@@ -0,0 +1,320 @@
1
+ [![Build Status](https://travis-ci.org/NoamB/sorcery.svg?branch=master)](https://travis-ci.org/NoamB/sorcery)
2
+ [![Code Climate](https://codeclimate.com/github/NoamB/sorcery.png)](https://codeclimate.com/github/NoamB/sorcery)
3
+
4
+ # sorcery
5
+ Magical Authentication for Rails 3 and 4. Supports ActiveRecord,
6
+ DataMapper, Mongoid and MongoMapper.
7
+
8
+ Inspired by restful_authentication, Authlogic and Devise. Crypto code taken
9
+ almost unchanged from Authlogic. OAuth code inspired by OmniAuth and Ryan
10
+ Bates's railscasts about it.
11
+
12
+ **Rails 4 status:** [Sorcery 0.8.5](http://rubygems.org/gems/sorcery/versions/0.8.5) is fully tested and ready for Rails 4.0.
13
+
14
+ **Rails 4.1 status:** Sorcery 0.8.6 (to be released, currently in master branch) works with Rails 4.1
15
+
16
+ https://github.com/NoamB/sorcery/wiki/Simple-Password-Authentication
17
+
18
+ ## Philosophy
19
+
20
+ Sorcery is a stripped-down, bare-bones authentication library, with which you
21
+ can write your own authentication flow. It was built with a few goals in mind:
22
+
23
+ * Less is more - less than 20 public methods to remember for the entire
24
+ feature-set make the lib easy to 'get'.
25
+ * No built-in or generated code - use the library's methods inside *your
26
+ own* MVC structures, and don't fight to fix someone else's.
27
+ * Magic yes, Voodoo no - the lib should be easy to hack for most developers.
28
+ * Configuration over Confusion - Centralized (1 file), Simple & short
29
+ configuration as possible, not drowning in syntactic sugar.
30
+ * Keep MVC cleanly separated - DB is for models, sessions are for
31
+ controllers. Models stay unaware of sessions.
32
+
33
+
34
+ Hopefully, I've achieved this. If not, let me know.
35
+
36
+ ## Useful Links:
37
+
38
+ Railscast: http://railscasts.com/episodes/283-authentication-with-sorcery
39
+
40
+ Example Rails 3 app using sorcery:
41
+ https://github.com/NoamB/sorcery-example-app
42
+
43
+ Documentation: http://rubydoc.info/gems/sorcery
44
+
45
+ Check out the tutorials in the github wiki!
46
+
47
+ ## API Summary
48
+
49
+ Below is a summary of the library methods. Most method names are self
50
+ explaining and the rest are commented:
51
+
52
+ # core
53
+ require_login # this is a before filter
54
+ login(email, password, remember_me = false)
55
+ auto_login(user)# login without credentials
56
+ logout
57
+ logged_in? # available to view
58
+ current_user # available to view
59
+ redirect_back_or_to # used when a user tries to access a page while logged out, is asked to login, and we want to return him back to the page he originally wanted.
60
+ @user.external? # external users, such as facebook/twitter etc.
61
+ User.authenticates_with_sorcery!
62
+
63
+ # activity logging
64
+ current_users
65
+
66
+ # http basic auth
67
+ require_login_from_http_basic # this is a before filter
68
+
69
+ # external
70
+ login_at(provider) # sends the user to an external service (twitter etc.) to authenticate.
71
+ login_from(provider) # tries to login from the external provider's callback.
72
+ create_from(provider) # create the user in the local app db.
73
+
74
+ # remember me
75
+ auto_login(user, should_remember=false) # login without credentials, optional remember_me
76
+ remember_me!
77
+ forget_me!
78
+
79
+ # reset password
80
+ User.load_from_reset_password_token(token)
81
+ @user.deliver_reset_password_instructions!
82
+ @user.change_password!(new_password)
83
+
84
+ # user activation
85
+ User.load_from_activation_token(token)
86
+ @user.activate!
87
+
88
+ Please see the tutorials in the github wiki for detailed usage information.
89
+
90
+ ## Installation:
91
+
92
+ If using bundler, first add 'sorcery' to your Gemfile:
93
+
94
+ gem "sorcery"
95
+
96
+ And run
97
+
98
+ bundle install
99
+
100
+ Otherwise simply
101
+
102
+ gem install sorcery
103
+
104
+ ## Rails configuration:
105
+
106
+ rails generate sorcery:install
107
+
108
+ This will generate the core migration file, the initializer file and the
109
+ 'User' model class.
110
+
111
+ rails generate sorcery:install remember_me reset_password
112
+
113
+ This will generate the migrations files for remember_me and reset_password
114
+ submodules and will create the initializer file (and add submodules to it),
115
+ and create the 'User' model class.
116
+
117
+ rails generate sorcery:install --model Person
118
+
119
+ This will generate the core migration file, the initializer and change the
120
+ model class (in the initializer and migration files) to the class 'Person'
121
+ (and its pluralized version, 'people')
122
+
123
+ rails generate sorcery:install http_basic_auth external remember_me --migrations
124
+
125
+ This will generate only the migration files for the specified submodules and
126
+ will add them to the initializer file.
127
+
128
+ Inside the initializer, the comments will tell you what each setting does.
129
+
130
+ ## DelayedJob Integration
131
+
132
+ By default emails are sent synchronously. You can send them asynchronously by
133
+ using the [delayed_job gem](https://github.com/collectiveidea/delayed_job).
134
+
135
+ After implementing the `delayed_job` into your project add the code below at
136
+ the end of the `config/initializers/sorcery.rb` file. After that all emails
137
+ will be sent asynchronously.
138
+
139
+ module Sorcery
140
+ module Model
141
+ module InstanceMethods
142
+ def generic_send_email(method, mailer)
143
+ config = sorcery_config
144
+ mail = config.send(mailer).delay.send(config.send(method), self)
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+ Sidekiq and Resque integrations are coming soon.
151
+
152
+ ## Single Table Inheritance (STI) Support
153
+ STI is supported via a single setting in config/initializers/sorcery.rb.
154
+
155
+ ## Full Features List by module:
156
+
157
+ Core (see lib/sorcery/model.rb and lib/sorcery/controller.rb):
158
+ * login/logout, optional return user to requested url on login, configurable
159
+ redirect for non-logged-in users.
160
+ * password encryption, algorithms: bcrypt(default), md5, sha1, sha256,
161
+ sha512, aes256, custom(yours!), none. Configurable stretches and salt.
162
+ * configurable attribute names for username, password and email.
163
+ * allow multiple fields to serve as username.
164
+
165
+
166
+ User Activation (see lib/sorcery/model/submodules/user_activation.rb):
167
+ * User activation by email with optional success email.
168
+ * configurable attribute names.
169
+ * configurable mailer, method name, and attribute name.
170
+ * configurable temporary token expiration.
171
+ * Optionally prevent non-active users to login.
172
+
173
+
174
+ Reset Password (see lib/sorcery/model/submodules/reset_password.rb):
175
+ * Reset password with email verification.
176
+ * configurable mailer, method name, and attribute name.
177
+ * configurable temporary token expiration.
178
+ * configurable time between emails (hammering protection).
179
+
180
+
181
+ Remember Me (see lib/sorcery/model/submodules/remember_me.rb):
182
+ * Remember me with configurable expiration.
183
+ * configurable attribute names.
184
+
185
+
186
+ Session Timeout (see lib/sorcery/controller/submodules/session_timeout.rb):
187
+ * Configurable session timeout.
188
+ * Optionally session timeout will be calculated from last user action.
189
+
190
+
191
+ Brute Force Protection (see
192
+ lib/sorcery/model/submodules/brute_force_protection.rb):
193
+ * Brute force login hammering protection.
194
+ * configurable logins before lock and lock duration.
195
+
196
+
197
+ Basic HTTP Authentication (see
198
+ lib/sorcery/controller/submodules/http_basic_auth.rb):
199
+ * A before filter for requesting authentication with HTTP Basic.
200
+ * automatic login from HTTP Basic.
201
+ * automatic login is disabled if session key changed.
202
+
203
+
204
+ Activity Logging (see lib/sorcery/model/submodules/activity_logging.rb):
205
+ * automatic logging of last login, last logout, last activity time and IP
206
+ address for last login.
207
+ * an easy method of collecting the list of currently logged in users.
208
+ * configurable timeout by which to decide whether to include a user in the
209
+ list of logged in users.
210
+
211
+
212
+ External (see lib/sorcery/controller/submodules/external.rb):
213
+ * OAuth1 and OAuth2 support (currently: Twitter, Facebook, Github, Google,
214
+ LinkedIn, VK, LiveID and Xing)
215
+ * configurable db field names and authentications table.
216
+
217
+
218
+ ## Next Planned Features:
219
+
220
+ I've got some thoughts which include (unordered):
221
+ * Passing a block to encrypt, allowing the developer to define his own mix
222
+ of salting and encrypting
223
+ * Forgot username, maybe as part of the reset_password module
224
+ * Scoping logins (to a subdomain or another arbitrary field)
225
+ * Allowing storing the salt and crypted password in the same DB field for
226
+ extra security
227
+ * Other reset password strategies (security questions?)
228
+ * Other brute force protection strategies (captcha)
229
+
230
+
231
+ Have an idea? Let me know, and it might get into the gem!
232
+
233
+ ## Backward compatibility
234
+
235
+ While the lib is young and evolving fast I'm breaking backward compatibility
236
+ quite often. I'm constantly finding better ways to do things and throwing away
237
+ old ways. To let you know when things are changing in a non-compatible way,
238
+ I'm bumping the minor version of the gem. The patch version changes are
239
+ backward compatible.
240
+
241
+ In short, an app that works with x.3.1 should be able to upgrade to x.3.2 with
242
+ no code changes. The same cannot be said about upgrading to x.4.0 and above,
243
+ however.
244
+
245
+ ## DataMapper Support
246
+
247
+ Important notes:
248
+
249
+ * Expected to work with DM adapters: dm-mysql-adapter,
250
+ dm-redis-adapter.
251
+ * Submodules DM adapter dependent: activity_logging (dm-mysql-adapter)
252
+ * Usage: include DataMapper::Resource in user model, follow sorcery
253
+ instructions (remember to add property id, validators and accessor
254
+ attributes such as password and password_confirmation)
255
+ * Option downcase__username_before_authenticating and dm-mysql,
256
+ http://datamapper.lighthouseapp.com/projects/20609/tickets/1105-add-support-for-definingchanging-default-collation
257
+
258
+ ## Upgrading
259
+
260
+ Important notes while upgrading:
261
+
262
+ * If you are upgrading from <= **0.8.5** and you're using Sorcery test helpers,
263
+ you need to change the way you include them to following code:
264
+
265
+ RSpec.configure do |config|
266
+ config.include Sorcery::TestHelpers::Rails::Controler, type: [:controller]
267
+ config.include Sorcery::TestHelpers::Rails::Integration, type: [:feature]
268
+ end
269
+
270
+ * If are upgrading to **0.8.2** and use activity_logging feature with
271
+ ActiveRecord, you will have to add a new column
272
+ `last_login_from_ip_address`
273
+ [#465](https://github.com/NoamB/sorcery/issues/465)
274
+ * Sinatra support existed until **v0.7.0** (including), but was dropped
275
+ later due to being a maintenance nightmare.
276
+ * If upgrading from <= **0.6.1 to >= **0.7.0** you need to change
277
+ 'username_attribute_name' to 'username_attribute_names' in initializer.
278
+ * If upgrading from <= **v0.5.1** to >= **v0.5.2** you need to explicitly
279
+ set your user_class model in the initializer file.
280
+
281
+ # This line must come after the 'user config' block.
282
+ config.user_class = User
283
+
284
+
285
+ ## Contributing to sorcery
286
+
287
+ Your feedback is very welcome and will make this gem much much better for you,
288
+ me and everyone else. Besides feedback on code, features, suggestions and bug
289
+ reports, you may want to actually make an impact on the code. For this:
290
+
291
+ * Fork it.
292
+ * Fix it.
293
+ * Test it.
294
+ * Commit it.
295
+ * Send me a pull request so I'll... Pull it.
296
+
297
+
298
+ If you feel sorcery has made your life easier, and you would like to express
299
+ your thanks via a donation, my paypal email is in the contact details.
300
+
301
+ ## Contact
302
+
303
+ Feel free to ask questions using these contact details:
304
+
305
+ #### Noam Ben-Ari
306
+
307
+ email: nbenari@gmail.com ( also for paypal )
308
+
309
+ twitter: @nbenari
310
+
311
+ #### Kir Shatrov
312
+
313
+ email: shatrov@me.com
314
+
315
+ twitter: @Kiiiir
316
+
317
+ ## Copyright
318
+
319
+ Copyright (c) 2010 Noam Ben Ari (nbenari@gmail.com). See LICENSE.txt for
320
+ further details.
data/Rakefile CHANGED
@@ -1,82 +1,6 @@
1
- # require 'bundler'
2
- # -- Commented because it's slow
3
- # begin
4
- # Bundler.setup(:default, :development)
5
- # rescue Bundler::BundlerError => e
6
- # $stderr.puts e.message
7
- # $stderr.puts "Run `bundle install` to install missing gems"
8
- # exit e.status_code
9
- # end
10
- # --
1
+ require "bundler/gem_tasks"
11
2
 
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "sorcery"
18
- gem.homepage = "http://github.com/NoamB/sorcery"
19
- gem.license = "MIT"
20
- gem.summary = "Magical authentication for Rails 3 applications"
21
- gem.description = "Provides common authentication needs such as signing in/out, activating by email and resetting password."
22
- gem.email = "nbenari@gmail.com"
23
- gem.authors = ["Noam Ben Ari"]
24
- # Include your dependencies below. Runtime dependencies are required when using your gem,
25
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
26
- # gem.add_runtime_dependency 'jabber4r', '> 0.1'
27
- # gem.add_development_dependency 'rspec', '> 1.2.3'
28
- end
29
- Jeweler::RubygemsDotOrgTasks.new
30
-
31
- require 'rspec/core'
32
3
  require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec)
33
5
 
34
- RSpec::Core::RakeTask.new(:spec) do |spec|
35
- spec.pattern = FileList['spec/**/*_spec.rb']
36
- end
37
-
38
- require 'yard'
39
- YARD::Rake::YardocTask.new
40
-
41
- desc 'Default: Run all sorcery specs.'
42
- task :default => :all_sorcery_specs
43
-
44
- desc "Run all sorcery specs"
45
- task :all_sorcery_specs do
46
- # we need to be empty, otherwise bundler will use parent bundler.
47
- env = {
48
- 'BUNDLE_GEMFILE' => nil,
49
- 'GEM_HOME' => nil
50
- }
51
- Dir['spec/**/Rakefile'].each do |rakefile|
52
- directory_name = File.dirname(rakefile)
53
- system(env, "cd #{directory_name} && bundle && bundle exec rake")
54
- abort unless $?.success?
55
- end
56
- end
57
-
58
- desc "Bundle all folders"
59
- task :bundle do
60
- sh "bundle"
61
- Dir['spec', 'spec/**'].each do |dir|
62
- if Dir.exists?(dir) && File.exists?(dir + "/Gemfile")
63
- sh <<-CMD
64
- cd #{dir}
65
- bundle
66
- CMD
67
- end
68
- end
69
- end
70
-
71
- desc "Bundle update all folders"
72
- task :bundle_update do
73
- sh "bundle update"
74
- Dir['spec', 'spec/**'].each do |dir|
75
- if Dir.exists?(dir) && File.exists?(dir + "/Gemfile")
76
- sh <<-CMD
77
- cd #{dir}
78
- bundle update
79
- CMD
80
- end
81
- end
82
- end
6
+ task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.4
1
+ 0.8.5
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'sqlite3'
4
+ gem 'rails', '~> 4.1'
5
+
6
+ gemspec path: '..'
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.1.0'
4
+
5
+ gem 'mongo_mapper', github: 'mongomapper/mongomapper'
6
+ gem 'sqlite3'
7
+
8
+ gemspec path: '..'
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.1.0'
4
+
5
+ gem 'pry'
6
+
7
+ gem 'mongoid', github: 'mongoid/mongoid'
8
+ gem 'bson_ext'
9
+ gem 'sqlite3'
10
+
11
+ gemspec path: '..'
@@ -0,0 +1,40 @@
1
+ module Sorcery
2
+ module Generators
3
+ module Helpers
4
+ private
5
+
6
+ def sorcery_config_path
7
+ "config/initializers/sorcery.rb"
8
+ end
9
+
10
+ # Either return the model passed in a classified form or return the default "User".
11
+ def model_class_name
12
+ options[:model] ? options[:model].classify : "User"
13
+ end
14
+
15
+ def model_path
16
+ @model_path ||= File.join("app", "models", "#{file_path}.rb")
17
+ end
18
+
19
+ def file_path
20
+ model_name.underscore
21
+ end
22
+
23
+ def namespace
24
+ Rails::Generators.namespace if Rails::Generators.respond_to?(:namespace)
25
+ end
26
+
27
+ def namespaced?
28
+ !!namespace
29
+ end
30
+
31
+ def model_name
32
+ if namespaced?
33
+ [namespace.to_s] + [model_class_name]
34
+ else
35
+ [model_class_name]
36
+ end.join("::")
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,24 +1,26 @@
1
1
  require 'rails/generators/migration'
2
+ require 'generators/sorcery/helpers'
2
3
 
3
4
  module Sorcery
4
5
  module Generators
5
6
  class InstallGenerator < Rails::Generators::Base
6
7
  include Rails::Generators::Migration
7
-
8
+ include Sorcery::Generators::Helpers
9
+
8
10
  source_root File.expand_path('../templates', __FILE__)
9
-
11
+
10
12
  argument :submodules, :optional => true, :type => :array, :banner => "submodules"
11
-
13
+
12
14
  class_option :model, :optional => true, :type => :string, :banner => "model",
13
15
  :desc => "Specify the model class name if you will use anything other than 'User'"
14
-
16
+
15
17
  class_option :migrations, :optional => true, :type => :boolean, :banner => "migrations",
16
18
  :desc => "Specify if you want to add submodules to an existing model\n\t\t\t # (will generate migrations files, and add submodules to config file)"
17
-
18
-
19
+
20
+
19
21
  # Copy the initializer file to config/initializers folder.
20
22
  def copy_initializer_file
21
- template "initializer.rb", "config/initializers/sorcery.rb" unless options[:migrations]
23
+ template "initializer.rb", sorcery_config_path unless options[:migrations]
22
24
  end
23
25
 
24
26
  def configure_initializer_file
@@ -26,19 +28,28 @@ module Sorcery
26
28
  if submodules
27
29
  submodule_names = submodules.collect{ |submodule| ':' + submodule }
28
30
 
29
- gsub_file "config/initializers/sorcery.rb", /submodules = \[.*\]/ do |str|
31
+ gsub_file sorcery_config_path, /submodules = \[.*\]/ do |str|
30
32
  current_submodule_names = (str =~ /\[(.*)\]/ ? $1 : '').delete(' ').split(',')
31
33
  "submodules = [#{(current_submodule_names | submodule_names).join(', ')}]"
32
34
  end
33
35
  end
36
+ end
34
37
 
38
+ def configure_model
35
39
  # Generate the model and add 'authenticates_with_sorcery!' unless you passed --migrations
36
40
  unless options[:migrations]
37
41
  generate "model #{model_class_name} --skip-migration"
38
- insert_into_file "app/models/#{model_class_name.underscore}.rb", " authenticates_with_sorcery!\n", :after => "class #{model_class_name} < ActiveRecord::Base\n"
42
+
43
+ inject_sorcery_to_model
39
44
  end
40
45
  end
41
46
 
47
+ def inject_sorcery_to_model
48
+ indents = " " * (namespaced? ? 2 : 1)
49
+
50
+ inject_into_class(model_path, model_class_name, "#{indents}authenticates_with_sorcery!\n")
51
+ end
52
+
42
53
  # Copy the migrations files to db/migrate folder
43
54
  def copy_migration_files
44
55
  # Copy core migration file in all cases except when you pass --migrations.
@@ -52,10 +63,9 @@ module Sorcery
52
63
  end
53
64
  end
54
65
  end
55
-
56
66
 
57
67
  end
58
-
68
+
59
69
  # Define the next_migration_number method (necessary for the migration_template method to work)
60
70
  def self.next_migration_number(dirname)
61
71
  if ActiveRecord::Base.timestamped_migrations
@@ -65,13 +75,7 @@ module Sorcery
65
75
  "%.3d" % (current_migration_number(dirname) + 1)
66
76
  end
67
77
  end
68
-
69
- private
70
78
 
71
- # Either return the model passed in a classified form or return the default "User".
72
- def model_class_name
73
- options[:model] ? options[:model].classify : "User"
74
- end
75
79
  end
76
80
  end
77
81
  end
@@ -144,7 +144,7 @@ Rails.application.config.sorcery.configure do |config|
144
144
  config.user_config do |user|
145
145
  # -- core --
146
146
  # specify username attributes, for example: [:username, :email].
147
- # Default: `[:username]`
147
+ # Default: `[:email]`
148
148
  #
149
149
  # user.username_attribute_names =
150
150
 
@@ -1,19 +1,10 @@
1
1
  class SorceryActivityLogging < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  add_column :<%= model_class_name.tableize %>, :last_login_at, :datetime, :default => nil
4
4
  add_column :<%= model_class_name.tableize %>, :last_logout_at, :datetime, :default => nil
5
5
  add_column :<%= model_class_name.tableize %>, :last_activity_at, :datetime, :default => nil
6
6
  add_column :<%= model_class_name.tableize %>, :last_login_from_ip_address, :string, :default => nil
7
-
8
- add_index :<%= model_class_name.tableize %>, [:last_logout_at, :last_activity_at]
9
- end
10
7
 
11
- def self.down
12
- remove_index :<%= model_class_name.tableize %>, [:last_logout_at, :last_activity_at]
13
-
14
- remove_column :<%= model_class_name.tableize %>, :last_login_from_ip_address
15
- remove_column :<%= model_class_name.tableize %>, :last_activity_at
16
- remove_column :<%= model_class_name.tableize %>, :last_logout_at
17
- remove_column :<%= model_class_name.tableize %>, :last_login_at
8
+ add_index :<%= model_class_name.tableize %>, [:last_logout_at, :last_activity_at]
18
9
  end
19
10
  end
@@ -1,13 +1,7 @@
1
1
  class SorceryBruteForceProtection < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  add_column :<%= model_class_name.tableize %>, :failed_logins_count, :integer, :default => 0
4
4
  add_column :<%= model_class_name.tableize %>, :lock_expires_at, :datetime, :default => nil
5
5
  add_column :<%= model_class_name.tableize %>, :unlock_token, :string, :default => nil
6
6
  end
7
-
8
- def self.down
9
- remove_column :<%= model_class_name.tableize %>, :lock_expires_at
10
- remove_column :<%= model_class_name.tableize %>, :failed_logins_count
11
- remove_column :<%= model_class_name.tableize %>, :unlock_token
12
- end
13
7
  end
@@ -1,16 +1,13 @@
1
1
  class SorceryCore < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  create_table :<%= model_class_name.tableize %> do |t|
4
- t.string :username, :null => false # if you use another field as a username, for example email, you can safely remove this field.
5
- t.string :email, :default => nil # if you use this field as a username, you might want to make it :null => false.
6
- t.string :crypted_password, :default => nil
7
- t.string :salt, :default => nil
4
+ t.string :email, :null => false
5
+ t.string :crypted_password, :null => false
6
+ t.string :salt, :null => false
8
7
 
9
8
  t.timestamps
10
9
  end
11
- end
12
10
 
13
- def self.down
14
- drop_table :<%= model_class_name.tableize %>
11
+ add_index :<%= model_class_name.tableize %>, :email, unique: true
15
12
  end
16
13
  end
@@ -1,5 +1,5 @@
1
1
  class SorceryExternal < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  create_table :authentications do |t|
4
4
  t.integer :<%= model_class_name.tableize.singularize %>_id, :null => false
5
5
  t.string :provider, :uid, :null => false
@@ -7,8 +7,4 @@ class SorceryExternal < ActiveRecord::Migration
7
7
  t.timestamps
8
8
  end
9
9
  end
10
-
11
- def self.down
12
- drop_table :authentications
13
- end
14
10
  end
@@ -1,15 +1,8 @@
1
1
  class SorceryRememberMe < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  add_column :<%= model_class_name.tableize %>, :remember_me_token, :string, :default => nil
4
4
  add_column :<%= model_class_name.tableize %>, :remember_me_token_expires_at, :datetime, :default => nil
5
-
6
- add_index :<%= model_class_name.tableize %>, :remember_me_token
7
- end
8
5
 
9
- def self.down
10
- remove_index :<%= model_class_name.tableize %>, :remember_me_token
11
-
12
- remove_column :<%= model_class_name.tableize %>, :remember_me_token_expires_at
13
- remove_column :<%= model_class_name.tableize %>, :remember_me_token
6
+ add_index :<%= model_class_name.tableize %>, :remember_me_token
14
7
  end
15
8
  end