sorcery 0.8.2 → 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 +17 -22
  6. data/README.md +371 -0
  7. data/Rakefile +3 -79
  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 +35 -10
  19. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -11
  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 +16 -21
  33. data/lib/sorcery/controller/submodules/brute_force_protection.rb +6 -6
  34. data/lib/sorcery/controller/submodules/external.rb +42 -43
  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 +22 -74
  38. data/lib/sorcery/model/config.rb +96 -0
  39. data/lib/sorcery/model/submodules/activity_logging.rb +30 -13
  40. data/lib/sorcery/model/submodules/brute_force_protection.rb +25 -27
  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/test_helpers/internal/rails.rb +17 -6
  62. data/lib/sorcery/test_helpers/internal.rb +27 -6
  63. data/lib/sorcery/test_helpers/rails/controller.rb +21 -0
  64. data/lib/sorcery/test_helpers/rails/integration.rb +26 -0
  65. data/lib/sorcery/version.rb +3 -0
  66. data/lib/sorcery.rb +82 -58
  67. data/sorcery.gemspec +24 -362
  68. data/spec/active_record/user_activation_spec.rb +18 -0
  69. data/spec/active_record/user_activity_logging_spec.rb +17 -0
  70. data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +6 -5
  71. data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +6 -5
  72. data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +5 -4
  73. data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +7 -7
  74. data/spec/active_record/user_spec.rb +37 -0
  75. data/spec/controllers/controller_activity_logging_spec.rb +124 -0
  76. data/spec/controllers/controller_brute_force_protection_spec.rb +43 -0
  77. data/spec/controllers/controller_http_basic_auth_spec.rb +68 -0
  78. data/spec/controllers/controller_oauth2_spec.rb +414 -0
  79. data/spec/controllers/controller_oauth_spec.rb +240 -0
  80. data/spec/controllers/controller_remember_me_spec.rb +117 -0
  81. data/spec/controllers/controller_session_timeout_spec.rb +80 -0
  82. data/spec/controllers/controller_spec.rb +218 -0
  83. data/spec/data_mapper/user_activation_spec.rb +10 -0
  84. data/spec/data_mapper/user_activity_logging_spec.rb +14 -0
  85. data/spec/data_mapper/user_brute_force_protection_spec.rb +9 -0
  86. data/spec/data_mapper/user_oauth_spec.rb +9 -0
  87. data/spec/data_mapper/user_remember_me_spec.rb +8 -0
  88. data/spec/data_mapper/user_reset_password_spec.rb +8 -0
  89. data/spec/data_mapper/user_spec.rb +27 -0
  90. data/spec/mongo_mapper/user_activation_spec.rb +9 -0
  91. data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
  92. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
  93. data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
  94. data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
  95. data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
  96. data/spec/mongo_mapper/user_spec.rb +37 -0
  97. data/spec/mongoid/user_activation_spec.rb +9 -0
  98. data/spec/mongoid/user_activity_logging_spec.rb +8 -0
  99. data/spec/mongoid/user_brute_force_protection_spec.rb +8 -0
  100. data/spec/mongoid/user_oauth_spec.rb +8 -0
  101. data/spec/mongoid/user_remember_me_spec.rb +8 -0
  102. data/spec/mongoid/user_reset_password_spec.rb +8 -0
  103. data/spec/mongoid/user_spec.rb +51 -0
  104. data/spec/orm/active_record.rb +21 -0
  105. data/spec/orm/data_mapper.rb +48 -0
  106. data/spec/orm/mongo_mapper.rb +10 -0
  107. data/spec/orm/mongoid.rb +22 -0
  108. data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
  109. data/spec/rails_app/app/active_record/user_provider.rb +3 -0
  110. data/spec/rails_app/app/controllers/sorcery_controller.rb +285 -0
  111. data/spec/rails_app/app/data_mapper/authentication.rb +8 -0
  112. data/spec/rails_app/app/data_mapper/user.rb +7 -0
  113. data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +2 -0
  114. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
  115. data/spec/{rails3_mongo_mapper → rails_app}/config/application.rb +13 -8
  116. data/spec/rails_app/config/boot.rb +4 -0
  117. data/spec/rails_app/config/database.yml +22 -0
  118. data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
  119. data/spec/{rails3_mongoid → rails_app}/config/initializers/session_store.rb +4 -0
  120. data/spec/rails_app/config/routes.rb +51 -0
  121. data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
  122. data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
  123. data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +2 -2
  124. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
  125. data/spec/rails_app/log/development.log +1791 -0
  126. data/spec/shared_examples/user_activation_shared_examples.rb +137 -98
  127. data/spec/shared_examples/user_activity_logging_shared_examples.rb +83 -15
  128. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +140 -21
  129. data/spec/shared_examples/user_oauth_shared_examples.rb +21 -16
  130. data/spec/shared_examples/user_remember_me_shared_examples.rb +36 -24
  131. data/spec/shared_examples/user_reset_password_shared_examples.rb +163 -130
  132. data/spec/shared_examples/user_shared_examples.rb +355 -193
  133. data/spec/sorcery_crypto_providers_spec.rb +74 -72
  134. data/spec/spec_helper.rb +32 -4
  135. metadata +262 -508
  136. data/Gemfile.lock +0 -175
  137. data/README.rdoc +0 -261
  138. data/VERSION +0 -1
  139. data/lib/sorcery/controller/submodules/external/protocols/oauth1.rb +0 -46
  140. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +0 -49
  141. data/lib/sorcery/controller/submodules/external/providers/base.rb +0 -21
  142. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +0 -98
  143. data/lib/sorcery/controller/submodules/external/providers/github.rb +0 -92
  144. data/lib/sorcery/controller/submodules/external/providers/google.rb +0 -91
  145. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +0 -102
  146. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +0 -92
  147. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +0 -93
  148. data/lib/sorcery/controller/submodules/external/providers/vk.rb +0 -100
  149. data/lib/sorcery/controller/submodules/external/providers/xing.rb +0 -97
  150. data/lib/sorcery/model/adapters/active_record.rb +0 -49
  151. data/lib/sorcery/model/adapters/mongo_mapper.rb +0 -56
  152. data/lib/sorcery/model/adapters/mongoid.rb +0 -88
  153. data/lib/sorcery/test_helpers/rails.rb +0 -16
  154. data/lib/sorcery/test_helpers.rb +0 -5
  155. data/spec/Gemfile +0 -12
  156. data/spec/Gemfile.lock +0 -129
  157. data/spec/README.md +0 -31
  158. data/spec/Rakefile +0 -12
  159. data/spec/rails3/.gitignore +0 -4
  160. data/spec/rails3/.rspec +0 -1
  161. data/spec/rails3/Gemfile +0 -15
  162. data/spec/rails3/Gemfile.lock +0 -162
  163. data/spec/rails3/README +0 -256
  164. data/spec/rails3/Rakefile +0 -11
  165. data/spec/rails3/app/controllers/application_controller.rb +0 -208
  166. data/spec/rails3/config/application.rb +0 -46
  167. data/spec/rails3/config/boot.rb +0 -13
  168. data/spec/rails3/config/database.yml +0 -27
  169. data/spec/rails3/config/environments/development.rb +0 -26
  170. data/spec/rails3/config/environments/in_memory.rb +0 -35
  171. data/spec/rails3/config/environments/production.rb +0 -49
  172. data/spec/rails3/config/environments/test.rb +0 -35
  173. data/spec/rails3/config/initializers/session_store.rb +0 -8
  174. data/spec/rails3/config/routes.rb +0 -59
  175. data/spec/rails3/config.ru +0 -4
  176. data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  177. data/spec/rails3/lib/tasks/.gitkeep +0 -0
  178. data/spec/rails3/public/404.html +0 -26
  179. data/spec/rails3/public/422.html +0 -26
  180. data/spec/rails3/public/500.html +0 -26
  181. data/spec/rails3/public/favicon.ico +0 -0
  182. data/spec/rails3/public/images/rails.png +0 -0
  183. data/spec/rails3/public/javascripts/application.js +0 -2
  184. data/spec/rails3/public/javascripts/controls.js +0 -965
  185. data/spec/rails3/public/javascripts/dragdrop.js +0 -974
  186. data/spec/rails3/public/javascripts/effects.js +0 -1123
  187. data/spec/rails3/public/javascripts/prototype.js +0 -6001
  188. data/spec/rails3/public/javascripts/rails.js +0 -175
  189. data/spec/rails3/public/robots.txt +0 -5
  190. data/spec/rails3/public/stylesheets/.gitkeep +0 -0
  191. data/spec/rails3/script/rails +0 -6
  192. data/spec/rails3/spec/controller_activity_logging_spec.rb +0 -130
  193. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -96
  194. data/spec/rails3/spec/controller_http_basic_auth_spec.rb +0 -50
  195. data/spec/rails3/spec/controller_oauth2_spec.rb +0 -380
  196. data/spec/rails3/spec/controller_oauth_spec.rb +0 -206
  197. data/spec/rails3/spec/controller_remember_me_spec.rb +0 -96
  198. data/spec/rails3/spec/controller_session_timeout_spec.rb +0 -55
  199. data/spec/rails3/spec/controller_spec.rb +0 -182
  200. data/spec/rails3/spec/integration_spec.rb +0 -23
  201. data/spec/rails3/spec/spec.opts +0 -2
  202. data/spec/rails3/spec/spec_helper.orig.rb +0 -27
  203. data/spec/rails3/spec/spec_helper.rb +0 -71
  204. data/spec/rails3/spec/user_activation_spec.rb +0 -16
  205. data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
  206. data/spec/rails3/spec/user_spec.rb +0 -36
  207. data/spec/rails3/vendor/plugins/.gitkeep +0 -0
  208. data/spec/rails3_mongo_mapper/.gitignore +0 -4
  209. data/spec/rails3_mongo_mapper/.rspec +0 -1
  210. data/spec/rails3_mongo_mapper/Gemfile +0 -16
  211. data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
  212. data/spec/rails3_mongo_mapper/Rakefile +0 -11
  213. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
  214. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
  215. data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
  216. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
  217. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  218. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  219. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  220. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  221. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  222. data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
  223. data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
  224. data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
  225. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  226. data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
  227. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
  228. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
  229. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
  230. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
  231. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
  232. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
  233. data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
  234. data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
  235. data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
  236. data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
  237. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  238. data/spec/rails3_mongo_mapper/public/404.html +0 -26
  239. data/spec/rails3_mongo_mapper/public/422.html +0 -26
  240. data/spec/rails3_mongo_mapper/public/500.html +0 -26
  241. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  242. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  243. data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
  244. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
  245. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
  246. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
  247. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
  248. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
  249. data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
  250. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  251. data/spec/rails3_mongo_mapper/script/rails +0 -6
  252. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +0 -175
  253. data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
  254. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
  255. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
  256. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
  257. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
  258. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
  259. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
  260. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
  261. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
  262. data/spec/rails3_mongo_mapper/spec/user_spec.rb +0 -37
  263. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  264. data/spec/rails3_mongoid/.gitignore +0 -4
  265. data/spec/rails3_mongoid/.rspec +0 -1
  266. data/spec/rails3_mongoid/Gemfile +0 -15
  267. data/spec/rails3_mongoid/Gemfile.lock +0 -146
  268. data/spec/rails3_mongoid/Rakefile +0 -11
  269. data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
  270. data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
  271. data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
  272. data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
  273. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  274. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  275. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  276. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  277. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  278. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  279. data/spec/rails3_mongoid/config/application.rb +0 -51
  280. data/spec/rails3_mongoid/config/boot.rb +0 -13
  281. data/spec/rails3_mongoid/config/environment.rb +0 -5
  282. data/spec/rails3_mongoid/config/environments/development.rb +0 -26
  283. data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
  284. data/spec/rails3_mongoid/config/environments/production.rb +0 -49
  285. data/spec/rails3_mongoid/config/environments/test.rb +0 -35
  286. data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
  287. data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
  288. data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
  289. data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
  290. data/spec/rails3_mongoid/config/locales/en.yml +0 -5
  291. data/spec/rails3_mongoid/config/mongoid.yml +0 -7
  292. data/spec/rails3_mongoid/config/routes.rb +0 -59
  293. data/spec/rails3_mongoid/config.ru +0 -4
  294. data/spec/rails3_mongoid/db/schema.rb +0 -23
  295. data/spec/rails3_mongoid/db/seeds.rb +0 -7
  296. data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
  297. data/spec/rails3_mongoid/public/404.html +0 -26
  298. data/spec/rails3_mongoid/public/422.html +0 -26
  299. data/spec/rails3_mongoid/public/500.html +0 -26
  300. data/spec/rails3_mongoid/public/favicon.ico +0 -0
  301. data/spec/rails3_mongoid/public/images/rails.png +0 -0
  302. data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
  303. data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
  304. data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
  305. data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
  306. data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
  307. data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
  308. data/spec/rails3_mongoid/public/robots.txt +0 -5
  309. data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
  310. data/spec/rails3_mongoid/script/rails +0 -6
  311. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +0 -111
  312. data/spec/rails3_mongoid/spec/controller_spec.rb +0 -186
  313. data/spec/rails3_mongoid/spec/spec.opts +0 -2
  314. data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
  315. data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
  316. data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
  317. data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
  318. data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
  319. data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
  320. data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
  321. data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
  322. data/spec/rails3_mongoid/spec/user_spec.rb +0 -38
  323. data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
  324. data/spec/shared_examples/controller_oauth2_shared_examples.rb +0 -56
  325. data/spec/shared_examples/controller_oauth_shared_examples.rb +0 -55
  326. /data/lib/sorcery/{controller/submodules/external/protocols → protocols}/certs/ca-bundle.crt +0 -0
  327. /data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
  328. /data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
  329. /data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
  330. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
  331. /data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
  332. /data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
  333. /data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
  334. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
  335. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
  336. /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
  337. /data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  338. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  339. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  340. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  341. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -0
  342. /data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
  343. /data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
  344. /data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
  345. /data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
  346. /data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
  347. /data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
  348. /data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +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
@@ -1,92 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with github.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.github'.
8
- # Via this new option you can configure Github specific settings like your app's key and secret.
9
- #
10
- # config.github.key = <key>
11
- # config.github.secret = <secret>
12
- # ...
13
- #
14
- module Github
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :github # access to github_client.
19
-
20
- def merge_github_defaults!
21
- @defaults.merge!(:@github => GithubClient)
22
- end
23
- end
24
- merge_github_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module GithubClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :auth_path,
36
- :token_path,
37
- :site,
38
- :scope,
39
- :user_info_path,
40
- :user_info_mapping
41
- attr_reader :access_token
42
-
43
- include Protocols::Oauth2
44
-
45
- def init
46
- @site = "https://github.com/"
47
- @user_info_path = "https://api.github.com/user"
48
- @scope = nil
49
- @auth_path = "/login/oauth/authorize"
50
- @token_path = "/login/oauth/access_token"
51
- @user_info_mapping = {}
52
- end
53
-
54
- def get_user_hash(access_token)
55
- user_hash = {}
56
- response = access_token.get(@user_info_path)
57
- user_hash[:user_info] = JSON.parse(response.body)
58
- user_hash[:uid] = user_hash[:user_info]['id']
59
- user_hash
60
- end
61
-
62
- def has_callback?
63
- true
64
- end
65
-
66
- # calculates and returns the url to which the user should be redirected,
67
- # to get authenticated at the external provider's site.
68
- def login_url(params,session)
69
- self.authorize_url({:authorize_url => @auth_path})
70
- end
71
-
72
- # tries to login the user from access token
73
- def process_callback(params,session)
74
- args = {}
75
- args.merge!({:code => params[:code]}) if params[:code]
76
- options = {
77
- :token_url => @token_path,
78
- :token_method => :post
79
- }
80
- return self.get_access_token(args, options)
81
- end
82
-
83
- end
84
- init
85
- end
86
-
87
- end
88
- end
89
- end
90
- end
91
- end
92
- end
@@ -1,91 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with google.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.google'.
8
- # Via this new option you can configure Google specific settings like your app's key and secret.
9
- #
10
- # config.google.key = <key>
11
- # config.google.secret = <secret>
12
- # ...
13
- #
14
- module Google
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :google # access to google_client.
19
-
20
- def merge_google_defaults!
21
- @defaults.merge!(:@google => GoogleClient)
22
- end
23
- end
24
- merge_google_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module GoogleClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :site,
36
- :auth_url,
37
- :token_path,
38
- :user_info_url,
39
- :scope,
40
- :user_info_mapping
41
- attr_reader :access_token
42
-
43
- include Protocols::Oauth2
44
-
45
- def init
46
- @site = "https://accounts.google.com"
47
- @auth_url = "/o/oauth2/auth"
48
- @token_url = "/o/oauth2/token"
49
- @user_info_url = "https://www.googleapis.com/oauth2/v1/userinfo"
50
- @scope = "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
51
- @user_info_mapping = {}
52
- end
53
-
54
- def get_user_hash(access_token)
55
- user_hash = {}
56
- response = access_token.get(@user_info_url)
57
- user_hash[:user_info] = JSON.parse(response.body)
58
- user_hash[:uid] = user_hash[:user_info]['id']
59
- user_hash
60
- end
61
-
62
- def has_callback?
63
- true
64
- end
65
-
66
- # calculates and returns the url to which the user should be redirected,
67
- # to get authenticated at the external provider's site.
68
- def login_url(params,session)
69
- self.authorize_url({:authorize_url => @auth_url})
70
- end
71
-
72
- # tries to login the user from access token
73
- def process_callback(params,session)
74
- args = {}
75
- args.merge!({:code => params[:code]}) if params[:code]
76
- options = {
77
- :token_url => @token_url,
78
- :token_method => :post
79
- }
80
- return self.get_access_token(args, options)
81
- end
82
- end
83
- init
84
- end
85
-
86
- end
87
- end
88
- end
89
- end
90
- end
91
- end
@@ -1,102 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with Linkedin.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.linkedin'.
8
- # Via this new option you can configure Linkedin specific settings like your app's key and secret.
9
- #
10
- # config.linkedin.key = <key>
11
- # config.linkedin.secret = <secret>
12
- # ...
13
- #
14
- module Linkedin
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :linkedin
19
-
20
- def merge_linkedin_defaults!
21
- @defaults.merge!(:@linkedin => LinkedinClient)
22
- end
23
- end
24
- merge_linkedin_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module LinkedinClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :site,
36
- :authorize_path,
37
- :request_token_path,
38
- :access_token_path,
39
- :user_info_path,
40
- :user_info_mapping,
41
- :user_info_fields,
42
- :access_permissions
43
- attr_reader :access_token
44
-
45
- include Protocols::Oauth1
46
-
47
- # Override included get_consumer method to provide authorize_path
48
- def get_consumer
49
- # Add access permissions to request token path
50
- @configuration[:request_token_path] += "?scope=" + self.access_permissions.join('+') unless self.access_permissions.blank? or @configuration[:request_token_path].include? "?scope="
51
- ::OAuth::Consumer.new(@key, @secret, @configuration)
52
- end
53
-
54
- def init
55
- @configuration = {
56
- site: "https://api.linkedin.com",
57
- authorize_path: '/uas/oauth/authenticate',
58
- request_token_path: '/uas/oauth/requestToken',
59
- access_token_path: '/uas/oauth/accessToken'
60
- }
61
- @user_info_path = "/v1/people/~"
62
- end
63
-
64
- def get_user_hash(access_token)
65
- user_hash = {}
66
- fields = self.user_info_fields.join(',')
67
- response = access_token.get("#{@user_info_path}:(#{fields})", 'x-li-format' => 'json')
68
- user_hash[:user_info] = JSON.parse(response.body)
69
- user_hash[:uid] = user_hash[:user_info]['id'].to_s
70
- user_hash
71
- end
72
-
73
- def has_callback?
74
- true
75
- end
76
-
77
- # calculates and returns the url to which the user should be redirected,
78
- # to get authenticated at the external provider's site.
79
- def login_url(params,session)
80
- req_token = self.get_request_token
81
- session[:request_token] = req_token.token
82
- session[:request_token_secret] = req_token.secret
83
- self.authorize_url({:request_token => req_token.token, :request_token_secret => req_token.secret})
84
- end
85
-
86
- # tries to login the user from access token
87
- def process_callback(params,session)
88
- args = {}
89
- args.merge!({:oauth_verifier => params[:oauth_verifier], :request_token => session[:request_token], :request_token_secret => session[:request_token_secret]})
90
- args.merge!({:code => params[:code]}) if params[:code]
91
- return self.get_access_token(args)
92
- end
93
-
94
- end
95
- init
96
- end
97
- end
98
- end
99
- end
100
- end
101
- end
102
- end
@@ -1,92 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with microsoft liveid
7
- # When included in the 'config.providers' option, it adds a new option, 'config.liveid'.
8
- # Via this new option you can configure LiveId specific settings like your app's key and secret.
9
- #
10
- # config.liveid.key = <key>
11
- # config.liveid.secret = <secret>
12
- # ...
13
- #
14
- module Liveid
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :liveid # access to liveid_client.
19
-
20
- def merge_liveid_defaults!
21
- @defaults.merge!(:@liveid => LiveidClient)
22
- end
23
- end
24
- merge_liveid_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module LiveidClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :site,
36
- :auth_url,
37
- :token_path,
38
- :user_info_url,
39
- :scope,
40
- :user_info_mapping
41
- attr_reader :access_token
42
-
43
- include Protocols::Oauth2
44
-
45
- def init
46
- @site = "https://oauth.live.com/"
47
- @auth_url = "/authorize"
48
- @token_path = "/token"
49
- @user_info_url = "https://apis.live.net/v5.0/me"
50
- @scope = "wl.basic wl.emails wl.offline_access"
51
- @user_info_mapping = {}
52
- end
53
-
54
- def get_user_hash(access_token)
55
- user_hash = {}
56
- access_token.token_param = "access_token"
57
- response = access_token.get(@user_info_url)
58
- user_hash[:user_info] = JSON.parse(response.body)
59
- user_hash[:uid] = user_hash[:user_info]['id']
60
- user_hash
61
- end
62
-
63
- def has_callback?
64
- true
65
- end
66
-
67
- # calculates and returns the url to which the user should be redirected,
68
- # to get authenticated at the external provider's site.
69
- def login_url(params,session)
70
- self.authorize_url({:authorize_url => @auth_url})
71
- end
72
-
73
- # tries to login the user from access token
74
- def process_callback(params,session)
75
- args = {}
76
- args.merge!({:code => params[:code]}) if params[:code]
77
- options = {
78
- :access_token_path => @token_path,
79
- :access_token_method => :post
80
- }
81
- return self.get_access_token(args, options)
82
- end
83
- end
84
- init
85
- end
86
-
87
- end
88
- end
89
- end
90
- end
91
- end
92
- end
@@ -1,93 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with Twitter.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.twitter'.
8
- # Via this new option you can configure Twitter specific settings like your app's key and secret.
9
- #
10
- # config.twitter.key = <key>
11
- # config.twitter.secret = <secret>
12
- # ...
13
- #
14
- module Twitter
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :twitter
19
- # def twitter(&blk) # allows block syntax.
20
- # yield @twitter
21
- # end
22
-
23
- def merge_twitter_defaults!
24
- @defaults.merge!(:@twitter => TwitterClient)
25
- end
26
- end
27
- merge_twitter_defaults!
28
- update!
29
- end
30
- end
31
-
32
- module TwitterClient
33
- include Base::BaseClient
34
- class << self
35
- attr_accessor :key,
36
- :secret,
37
- :callback_url,
38
- :site,
39
- :user_info_path,
40
- :user_info_mapping
41
- attr_reader :access_token
42
-
43
- include Protocols::Oauth1
44
-
45
- # Override included get_consumer method to provide authorize_path
46
- def get_consumer
47
- ::OAuth::Consumer.new(@key, @secret, :site => @site, :authorize_path => "/oauth/authenticate")
48
- end
49
-
50
- def init
51
- @site = "https://api.twitter.com"
52
- @user_info_path = "/1.1/account/verify_credentials.json"
53
- @user_info_mapping = {}
54
- end
55
-
56
- def get_user_hash(access_token)
57
- user_hash = {}
58
- response = access_token.get(@user_info_path)
59
- user_hash[:user_info] = JSON.parse(response.body)
60
- user_hash[:uid] = user_hash[:user_info]['id'].to_s
61
- user_hash
62
- end
63
-
64
- def has_callback?
65
- true
66
- end
67
-
68
- # calculates and returns the url to which the user should be redirected,
69
- # to get authenticated at the external provider's site.
70
- def login_url(params,session)
71
- req_token = self.get_request_token
72
- session[:request_token] = req_token.token
73
- session[:request_token_secret] = req_token.secret
74
- self.authorize_url({:request_token => req_token.token, :request_token_secret => req_token.secret})
75
- end
76
-
77
- # tries to login the user from access token
78
- def process_callback(params, session)
79
- args = {}
80
- args.merge!({:oauth_verifier => params[:oauth_verifier], :request_token => session[:request_token], :request_token_secret => session[:request_token_secret]})
81
- args.merge!({:code => params[:code]}) if params[:code]
82
- return self.get_access_token(args)
83
- end
84
-
85
- end
86
- init
87
- end
88
- end
89
- end
90
- end
91
- end
92
- end
93
- end
@@ -1,100 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with vk.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.vk'.
8
- # Via this new option you can configure Vk specific settings like your app's key and secret.
9
- #
10
- # config.vk.key = <key>
11
- # config.vk.secret = <secret>
12
- # ...
13
- #
14
- module Vk
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :vk # access to vk_client.
19
-
20
- def merge_vk_defaults!
21
- @defaults.merge!(:@vk => VkClient)
22
- end
23
- end
24
- merge_vk_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module VkClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :auth_path,
36
- :token_path,
37
- :site,
38
- :user_info_mapping
39
- attr_reader :access_token
40
-
41
- include Protocols::Oauth2
42
-
43
- def init
44
- @site = "https://oauth.vk.com/"
45
- @user_info_url = "https://api.vk.com/method/getProfiles"
46
- @auth_path = "/authorize"
47
- @token_path = "/access_token"
48
- @user_info_mapping = {}
49
- end
50
-
51
- def get_user_hash(access_token)
52
- user_hash = {}
53
-
54
- params = {
55
- :access_token => access_token.token,
56
- :uids => access_token.params["user_id"],
57
- :fields => @user_info_mapping.values.join(",")
58
- }
59
-
60
- response = access_token.get(@user_info_url, :params => params)
61
- if user_hash[:user_info] = JSON.parse(response.body)
62
- user_hash[:user_info] = user_hash[:user_info]["response"][0]
63
- # add full_name - useful if you do not store it in separate fields
64
- user_hash[:user_info]["full_name"] = [user_hash[:user_info]["first_name"], user_hash[:user_info]["last_name"]].join(" ")
65
- user_hash[:uid] = user_hash[:user_info]["uid"]
66
- end
67
- user_hash
68
- end
69
-
70
- def has_callback?
71
- true
72
- end
73
-
74
- # calculates and returns the url to which the user should be redirected,
75
- # to get authenticated at the external provider's site.
76
- def login_url(params,session)
77
- self.authorize_url({:authorize_url => @auth_path})
78
- end
79
-
80
- # tries to login the user from access token
81
- def process_callback(params,session)
82
- args = {}
83
- args.merge!({:code => params[:code]}) if params[:code]
84
- options = {
85
- :token_url => @token_path,
86
- :token_method => :post
87
- }
88
- return self.get_access_token(args, options)
89
- end
90
-
91
- end
92
- init
93
- end
94
-
95
- end
96
- end
97
- end
98
- end
99
- end
100
- end
@@ -1,97 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- # This module adds support for OAuth with xing.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.xing'.
8
- # Via this new option you can configure Xing specific settings like your app's key and secret.
9
- #
10
- # config.xing.key = <key>
11
- # config.xing.secret = <secret>
12
- # ...
13
- #
14
- module Xing
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :xing
19
-
20
- def merge_xing_defaults!
21
- @defaults.merge!(:@xing => XingClient)
22
- end
23
- end
24
- merge_xing_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module XingClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :site,
36
- :authorize_path,
37
- :request_token_path,
38
- :access_token_path,
39
- :user_info_path,
40
- :user_info_mapping
41
- attr_reader :access_token
42
-
43
- include Protocols::Oauth1
44
-
45
- # Override included get_consumer method to provide authorize_path
46
- def get_consumer
47
- ::OAuth::Consumer.new(@key, @secret, @configuration)
48
- end
49
-
50
- def init
51
- @configuration = {
52
- site: "https://api.xing.com/v1",
53
- authorize_path: '/authorize',
54
- request_token_path: '/request_token',
55
- access_token_path: '/access_token'
56
- }
57
- @user_info_path = "/users/me"
58
- end
59
-
60
- def get_user_hash(access_token)
61
- user_hash = {}
62
- response = access_token.get(@user_info_path)
63
- user_hash[:user_info] = JSON.parse(response.body)['users'].first
64
- user_hash[:uid] = user_hash[:user_info]['id'].to_s
65
- user_hash
66
- end
67
-
68
- def has_callback?
69
- true
70
- end
71
-
72
- # calculates and returns the url to which the user should be redirected,
73
- # to get authenticated at the external provider's site.
74
- def login_url(params,session)
75
- req_token = self.get_request_token
76
- session[:request_token] = req_token.token
77
- session[:request_token_secret] = req_token.secret
78
- self.authorize_url({:request_token => req_token.token, :request_token_secret => req_token.secret})
79
- end
80
-
81
- # tries to login the user from access token
82
- def process_callback(params, session)
83
- args = {}
84
- args.merge!({:oauth_verifier => params[:oauth_verifier], :request_token => session[:request_token], :request_token_secret => session[:request_token_secret]})
85
- args.merge!({:code => params[:code]}) if params[:code]
86
- return self.get_access_token(args)
87
- end
88
-
89
- end
90
- init
91
- end
92
- end
93
- end
94
- end
95
- end
96
- end
97
- end