sorcery 0.8.1 → 0.9.1

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 +279 -0
  5. data/Gemfile +18 -23
  6. data/README.md +372 -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 +53 -16
  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 +85 -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 +74 -0
  51. data/lib/sorcery/providers/github.rb +60 -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 +429 -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 +370 -195
  136. data/spec/sorcery_crypto_providers_spec.rb +74 -72
  137. data/spec/spec_helper.rb +32 -4
  138. metadata +259 -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
@@ -26,17 +26,12 @@ Rails.application.config.sorcery.configure do |config|
26
26
  #
27
27
  # config.cookie_domain =
28
28
 
29
-
30
- # -- remember_me --
31
- # allow the remember_me cookie to settable through AJAX
29
+
30
+ # Allow the remember_me cookie to be set through AJAX
32
31
  # Default: `true`
33
32
  #
34
- # user.remember_me_httponly =
35
-
36
- # How long in seconds the session length will be
37
- # Default: `604800`
38
- #
39
- # user.remember_me_for =
33
+ # config.remember_me_httponly =
34
+
40
35
 
41
36
  # -- session timeout --
42
37
  # How long in seconds to keep the session alive.
@@ -78,7 +73,7 @@ Rails.application.config.sorcery.configure do |config|
78
73
 
79
74
 
80
75
  # -- external --
81
- # What providers are supported by this app, i.e. [:twitter, :facebook, :github, :google, :liveid] .
76
+ # What providers are supported by this app, i.e. [:twitter, :facebook, :github, :linkedin, :xing, :google, :liveid, :salesforce] .
82
77
  # Default: `[]`
83
78
  #
84
79
  # config.external_providers =
@@ -100,9 +95,19 @@ Rails.application.config.sorcery.configure do |config|
100
95
  # config.linkedin.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=linkedin"
101
96
  # config.linkedin.user_info_fields = ['first-name', 'last-name']
102
97
  # config.linkedin.user_info_mapping = {first_name: "firstName", last_name: "lastName"}
103
- # config.linkedin.access_permissions = ['r_basicprofile']
98
+ # config.linkedin.access_permissions = ['r_basicprofile']
99
+ #
100
+ #
101
+ # For information about XING API:
102
+ # - user info fields go to https://dev.xing.com/docs/get/users/me
104
103
  #
105
- # Twitter wil not accept any requests nor redirect uri containing localhost,
104
+ # config.xing.key = ""
105
+ # config.xing.secret = ""
106
+ # config.xing.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=xing"
107
+ # config.xing.user_info_mapping = {first_name: "first_name", last_name: "last_name"}
108
+ #
109
+ #
110
+ # Twitter will not accept any requests nor redirect uri containing localhost,
106
111
  # make sure you use 0.0.0.0:3000 to access your app in development
107
112
  #
108
113
  # config.twitter.key = ""
@@ -114,7 +119,9 @@ Rails.application.config.sorcery.configure do |config|
114
119
  # config.facebook.secret = ""
115
120
  # config.facebook.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=facebook"
116
121
  # config.facebook.user_info_mapping = {:email => "name"}
117
- # config.facebook.access_permissions = ["email", "publish_stream"]
122
+ # config.facebook.access_permissions = ["email", "publish_actions"]
123
+ # config.facebook.display = "page"
124
+ # config.facebook.api_version = "v2.2"
118
125
  #
119
126
  # config.github.key = ""
120
127
  # config.github.secret = ""
@@ -140,12 +147,35 @@ Rails.application.config.sorcery.configure do |config|
140
147
  # config.liveid.callback_url = "http://mydomain.com:3000/oauth/callback?provider=liveid"
141
148
  # config.liveid.user_info_mapping = {:username => "name"}
142
149
 
150
+ # For information about JIRA API:
151
+ # https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+OAuth+authentication
152
+ # to obtain the consumer key and the public key you can use the jira-ruby gem https://github.com/sumoheavy/jira-ruby
153
+ # or run openssl req -x509 -nodes -newkey rsa:1024 -sha1 -keyout rsakey.pem -out rsacert.pem to obtain the public key
154
+ # Make sure you have configured the application link properly
155
+
156
+ # config.jira.key = "1234567"
157
+ # config.jira.secret = "jiraTest"
158
+ # config.jira.site = "http://localhost:2990/jira/plugins/servlet/oauth"
159
+ # config.jira.signature_method = "RSA-SHA1"
160
+ # config.jira.private_key_file = "rsakey.pem"
161
+
162
+ # For information about Salesforce API:
163
+ # https://developer.salesforce.com/signup &
164
+ # https://www.salesforce.com/us/developer/docs/api_rest/
165
+ # Salesforce callback_url must be https. You can run the following to generate self-signed ssl cert
166
+ # openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout server.key -out server.crt
167
+ # Make sure you have configured the application link properly
168
+ # config.salesforce.key = '123123'
169
+ # config.salesforce.secret = 'acb123'
170
+ # config.salesforce.callback_url = "https://127.0.0.1:9292/oauth/callback?provider=salesforce"
171
+ # config.salesforce.scope = "full"
172
+ # config.salesforce.user_info_mapping = {:email => "email"}
143
173
 
144
174
  # --- user config ---
145
175
  config.user_config do |user|
146
176
  # -- core --
147
177
  # specify username attributes, for example: [:username, :email].
148
- # Default: `[:username]`
178
+ # Default: `[:email]`
149
179
  #
150
180
  # user.username_attribute_names =
151
181
 
@@ -217,6 +247,13 @@ Rails.application.config.sorcery.configure do |config|
217
247
  # user.subclasses_inherit_config =
218
248
 
219
249
 
250
+ # -- remember_me --
251
+ # How long in seconds the session length will be
252
+ # Default: `604800`
253
+ #
254
+ # user.remember_me_for =
255
+
256
+
220
257
  # -- user_activation --
221
258
  # the attribute name to hold activation state (active/pending).
222
259
  # Default: `:activation_state`
@@ -319,7 +356,7 @@ Rails.application.config.sorcery.configure do |config|
319
356
  # user.reset_password_expiration_period =
320
357
 
321
358
 
322
- # hammering protection, how long to wait before allowing another email to be sent.
359
+ # hammering protection, how long in seconds to wait before allowing another email to be sent.
323
360
  # Default: `5 * 60`
324
361
  #
325
362
  # user.reset_password_time_between_emails =
@@ -389,7 +426,7 @@ Rails.application.config.sorcery.configure do |config|
389
426
  # user.last_activity_at_attribute_name =
390
427
 
391
428
 
392
- # How long since last activity is he user defined logged out?
429
+ # How long since last activity is the user defined logged out?
393
430
  # Default: `10 * 60`
394
431
  #
395
432
  # user.activity_timeout =
@@ -1,17 +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
-
7
- add_index :<%= model_class_name.tableize %>, [:last_logout_at, :last_activity_at]
8
- end
6
+ add_column :<%= model_class_name.tableize %>, :last_login_from_ip_address, :string, :default => nil
9
7
 
10
- def self.down
11
- remove_index :<%= model_class_name.tableize %>, [:last_logout_at, :last_activity_at]
12
-
13
- remove_column :<%= model_class_name.tableize %>, :last_activity_at
14
- remove_column :<%= model_class_name.tableize %>, :last_logout_at
15
- remove_column :<%= model_class_name.tableize %>, :last_login_at
8
+ add_index :<%= model_class_name.tableize %>, [:last_logout_at, :last_activity_at]
16
9
  end
17
10
  end
@@ -1,13 +1,9 @@
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
- end
7
6
 
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
7
+ add_index :<%= model_class_name.tableize %>, :unlock_token
12
8
  end
13
- end
9
+ 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
6
+ t.string :salt
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,14 +1,12 @@
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
6
6
 
7
7
  t.timestamps
8
8
  end
9
- end
10
9
 
11
- def self.down
12
- drop_table :authentications
10
+ add_index :authentications, [:provider, :uid]
13
11
  end
14
- end
12
+ 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
@@ -1,17 +1,9 @@
1
1
  class SorceryResetPassword < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  add_column :<%= model_class_name.tableize %>, :reset_password_token, :string, :default => nil
4
4
  add_column :<%= model_class_name.tableize %>, :reset_password_token_expires_at, :datetime, :default => nil
5
5
  add_column :<%= model_class_name.tableize %>, :reset_password_email_sent_at, :datetime, :default => nil
6
-
7
- add_index :<%= model_class_name.tableize %>, :reset_password_token
8
- end
9
6
 
10
- def self.down
11
- remove_index :<%= model_class_name.tableize %>, :reset_password_token
12
-
13
- remove_column :<%= model_class_name.tableize %>, :reset_password_email_sent_at
14
- remove_column :<%= model_class_name.tableize %>, :reset_password_token_expires_at
15
- remove_column :<%= model_class_name.tableize %>, :reset_password_token
7
+ add_index :<%= model_class_name.tableize %>, :reset_password_token
16
8
  end
17
9
  end
@@ -1,17 +1,9 @@
1
1
  class SorceryUserActivation < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  add_column :<%= model_class_name.tableize %>, :activation_state, :string, :default => nil
4
4
  add_column :<%= model_class_name.tableize %>, :activation_token, :string, :default => nil
5
5
  add_column :<%= model_class_name.tableize %>, :activation_token_expires_at, :datetime, :default => nil
6
-
7
- add_index :<%= model_class_name.tableize %>, :activation_token
8
- end
9
6
 
10
- def self.down
11
- remove_index :<%= model_class_name.tableize %>, :activation_token
12
-
13
- remove_column :<%= model_class_name.tableize %>, :activation_token_expires_at
14
- remove_column :<%= model_class_name.tableize %>, :activation_token
15
- remove_column :<%= model_class_name.tableize %>, :activation_state
7
+ add_index :<%= model_class_name.tableize %>, :activation_token
16
8
  end
17
9
  end
@@ -0,0 +1,120 @@
1
+ module Sorcery
2
+ module Adapters
3
+ class ActiveRecordAdapter < BaseAdapter
4
+ def update_attributes(attrs)
5
+ attrs.each do |name, value|
6
+ @model.send(:"#{name}=", value)
7
+ end
8
+ primary_key = @model.class.primary_key
9
+ @model.class.where(:"#{primary_key}" => @model.send(:"#{primary_key}")).update_all(attrs)
10
+ end
11
+
12
+ def save(options = {})
13
+ mthd = options.delete(:raise_on_failure) ? :save! : :save
14
+ @model.send(mthd, options)
15
+ end
16
+
17
+ def increment(field)
18
+ @model.increment!(field)
19
+ end
20
+
21
+ def find_authentication_by_oauth_credentials(relation_name, provider, uid)
22
+ @user_config ||= ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config
23
+ conditions = {
24
+ @user_config.provider_uid_attribute_name => uid,
25
+ @user_config.provider_attribute_name => provider
26
+ }
27
+
28
+ @model.public_send(relation_name).where(conditions).first
29
+ end
30
+
31
+ class << self
32
+ def define_field(name, type, options={})
33
+ # AR fields are defined through migrations, only validator here
34
+ end
35
+
36
+ def define_callback(time, event, method_name, options={})
37
+ @klass.send "#{time}_#{event}", method_name, options.slice(:if)
38
+ end
39
+
40
+ def find_by_oauth_credentials(provider, uid)
41
+ @user_config ||= ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config
42
+ conditions = {
43
+ @user_config.provider_uid_attribute_name => uid,
44
+ @user_config.provider_attribute_name => provider
45
+ }
46
+
47
+ @klass.where(conditions).first
48
+ end
49
+
50
+ def find_by_remember_me_token(token)
51
+ @klass.where(@klass.sorcery_config.remember_me_token_attribute_name => token).first
52
+ end
53
+
54
+ def find_by_credentials(credentials)
55
+ relation = nil
56
+
57
+ @klass.sorcery_config.username_attribute_names.each do |attribute|
58
+ if @klass.sorcery_config.downcase_username_before_authenticating
59
+ condition = @klass.arel_table[attribute].lower.eq(@klass.arel_table.lower(credentials[0]))
60
+ else
61
+ condition = @klass.arel_table[attribute].eq(credentials[0])
62
+ end
63
+
64
+ if relation.nil?
65
+ relation = condition
66
+ else
67
+ relation = relation.or(condition)
68
+ end
69
+ end
70
+
71
+ @klass.where(relation).first
72
+ end
73
+
74
+ def find_by_token(token_attr_name, token)
75
+ condition = @klass.arel_table[token_attr_name].eq(token)
76
+
77
+ @klass.where(condition).first
78
+ end
79
+
80
+ def find_by_activation_token(token)
81
+ @klass.where(@klass.sorcery_config.activation_token_attribute_name => token).first
82
+ end
83
+
84
+ def find_by_id(id)
85
+ @klass.find_by_id(id)
86
+ end
87
+
88
+ def find_by_username(username)
89
+ @klass.sorcery_config.username_attribute_names.each do |attribute|
90
+ if @klass.sorcery_config.downcase_username_before_authenticating
91
+ username = username.downcase
92
+ end
93
+
94
+ result = @klass.where(attribute => username).first
95
+ return result if result
96
+ end
97
+ end
98
+
99
+ def find_by_email(email)
100
+ @klass.where(@klass.sorcery_config.email_attribute_name => email).first
101
+ end
102
+
103
+ def get_current_users
104
+ config = @klass.sorcery_config
105
+
106
+ @klass
107
+ .where("#{config.last_activity_at_attribute_name} IS NOT NULL") \
108
+ .where("#{config.last_logout_at_attribute_name} IS NULL OR #{config.last_activity_at_attribute_name} > #{config.last_logout_at_attribute_name}") \
109
+ .where("#{config.last_activity_at_attribute_name} > ? ", config.activity_timeout.seconds.ago.utc.to_s(:db))
110
+ end
111
+
112
+ def transaction(&blk)
113
+ @klass.tap(&blk)
114
+ end
115
+ end
116
+ end
117
+
118
+
119
+ end
120
+ end
@@ -0,0 +1,30 @@
1
+ module Sorcery
2
+ module Adapters
3
+ class BaseAdapter
4
+ def initialize(model)
5
+ @model = model
6
+ end
7
+
8
+ def self.from(klass)
9
+ @klass = klass
10
+ self
11
+ end
12
+
13
+ def self.delete_all
14
+ @klass.delete_all
15
+ end
16
+
17
+ def self.find(id)
18
+ find_by_id(id)
19
+ end
20
+
21
+ def increment(field)
22
+ @model.increment(field)
23
+ end
24
+
25
+ def update_attribute(name, value)
26
+ update_attributes(name => value)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,176 @@
1
+ module Sorcery
2
+ module Adapters
3
+ class DataMapperAdapter < BaseAdapter
4
+ module Wrapper
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ sorcery_adapter.verify_submodules_compatibility!
9
+ end
10
+
11
+ def sorcery_adapter
12
+ @sorcery_adapter ||= Sorcery::Adapters::DataMapperAdapter.new(self)
13
+ end
14
+
15
+ module ClassMethods
16
+ def sorcery_adapter
17
+ Sorcery::Adapters::DataMapperAdapter.from(self)
18
+ end
19
+ end
20
+ end
21
+
22
+ def increment(attr)
23
+ @model[attr] ||= 0
24
+ @model[attr] += 1
25
+ @model
26
+ end
27
+
28
+ def update_attributes(attrs)
29
+ attrs.each do |name, value|
30
+ value = value.utc if value.is_a?(ActiveSupport::TimeWithZone)
31
+ @model.send(:"#{name}=", value)
32
+ end
33
+ @model.class.get(@model.id).update(attrs)
34
+ end
35
+
36
+ def update_attribute(name, value)
37
+ update_attributes(name => value)
38
+ end
39
+
40
+ def save(options = {})
41
+ if options.key?(:validate) && !options[:validate]
42
+ @model.save!
43
+ else
44
+ @model.save
45
+ end
46
+ end
47
+
48
+ class << self
49
+ def define_field(name, type, options={})
50
+ @klass.property name, type, options.slice(:length, :default)
51
+
52
+ # Workaround local timezone retrieval problem NOTE dm-core issue #193
53
+ if type == Time
54
+ @klass.send(:alias_method, "orig_#{name}", name)
55
+ @klass.send :define_method, name do
56
+ t = send("orig_#{name}")
57
+ t && Time.new(t.year, t.month, t.day, t.hour, t.min, t.sec, 0)
58
+ end
59
+ end
60
+ end
61
+
62
+ def define_callback(time, event, method_name, options={})
63
+ event = :valid? if event == :validation
64
+ condition = options[:if]
65
+
66
+ user_klass = @klass
67
+
68
+ block = Proc.new do |record|
69
+ if condition.nil?
70
+ send(method_name)
71
+ elsif condition.respond_to?(:call)
72
+ send(method_name) if condition.call(self)
73
+ elsif condition.is_a? Symbol
74
+ send(method_name) if send(condition)
75
+ end
76
+ end
77
+
78
+ @klass.send(time, event, &block)
79
+ end
80
+
81
+ def find(id)
82
+ @klass.get(id)
83
+ end
84
+
85
+ def delete_all
86
+ @klass.destroy
87
+ end
88
+
89
+ # NOTE
90
+ # DM Adapter dependent
91
+ # DM creates MySQL tables case insensitive by default
92
+ # http://datamapper.lighthouseapp.com/projects/20609-datamapper/tickets/1105
93
+ def find_by_credentials(credentials)
94
+ credential = credentials[0].dup
95
+ credential.downcase! if @klass.sorcery_config.downcase_username_before_authenticating
96
+ @klass.sorcery_config.username_attribute_names.each do |name|
97
+ @user = @klass.first(name => credential)
98
+ break if @user
99
+ end
100
+ !!@user ? @klass.get(@user.id) : nil
101
+ end
102
+
103
+ def find_by_oauth_credentials(provider, uid)
104
+ @user_config = ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config
105
+ user = @klass.first(@user_config.provider_attribute_name => provider, @user_config.provider_uid_attribute_name => uid)
106
+ !!user ? @klass.get(user.id) : nil
107
+ end
108
+
109
+ def find_by_token(token_attr_name, token)
110
+ @klass.first(token_attr_name => token)
111
+ end
112
+
113
+ def find_by_id(id)
114
+ @klass.get(id)
115
+ rescue ::DataMapper::ObjectNotFoundError
116
+ nil
117
+ end
118
+
119
+ def find_by_activation_token(token)
120
+ user = @klass.first(@klass.sorcery_config.activation_token_attribute_name => token)
121
+ !!user ? @klass.get(user.id) : nil
122
+ end
123
+
124
+ def find_by_remember_me_token(token)
125
+ user = @klass.first(@klass.sorcery_config.remember_me_token_attribute_name => token)
126
+ !!user ? @klass.get(user.id) : nil
127
+ end
128
+
129
+ def find_by_username(username)
130
+ user = nil
131
+ @klass.sorcery_config.username_attribute_names.each do |name|
132
+ user = @klass.first(name => username)
133
+ break if user
134
+ end
135
+ !!user ? @klass.get(user.id) : nil
136
+ end
137
+
138
+ def transaction(&blk)
139
+ @klass.tap(&blk)
140
+ end
141
+
142
+ def find_by_sorcery_token(token_attr_name, token)
143
+ user = @klass.first(token_attr_name => token)
144
+ !!user ? @klass.get(user.id) : nil
145
+ end
146
+
147
+ def find_by_email(email)
148
+ user = @klass.first(@klass.sorcery_config.email_attribute_name => email)
149
+ !!user ? @klass.get(user.id) : nil
150
+ end
151
+
152
+ # NOTE
153
+ # DM Adapter dependent
154
+ def get_current_users
155
+ unless @klass.repository.adapter.is_a?(::DataMapper::Adapters::MysqlAdapter)
156
+ raise 'Unsupported DataMapper Adapter'
157
+ end
158
+ config = @klass.sorcery_config
159
+ ret = @klass.all(config.last_logout_at_attribute_name => nil) |
160
+ @klass.all(config.last_activity_at_attribute_name.gt => config.last_logout_at_attribute_name)
161
+ ret = ret.all(config.last_activity_at_attribute_name.not => nil)
162
+ ret = ret.all(config.last_activity_at_attribute_name.gt => config.activity_timeout.seconds.ago.utc)
163
+ ret
164
+ end
165
+
166
+ def verify_submodules_compatibility!
167
+ active_submodules = [::Sorcery::Controller::Config.submodules].flatten
168
+
169
+ if active_submodules.include?(:activity_logging) && !repository.adapter.is_a?(::DataMapper::Adapters::MysqlAdapter)
170
+ raise "DataMapper adapter compatibility error, please check documentation"
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end