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
data/Gemfile.lock DELETED
@@ -1,175 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- abstract (1.0.0)
5
- actionmailer (3.2.2)
6
- actionpack (= 3.2.2)
7
- mail (~> 2.4.0)
8
- actionpack (3.2.2)
9
- activemodel (= 3.2.2)
10
- activesupport (= 3.2.2)
11
- builder (~> 3.0.0)
12
- erubis (~> 2.7.0)
13
- journey (~> 1.0.1)
14
- rack (~> 1.4.0)
15
- rack-cache (~> 1.1)
16
- rack-test (~> 0.6.1)
17
- sprockets (~> 2.1.2)
18
- activemodel (3.2.2)
19
- activesupport (= 3.2.2)
20
- builder (~> 3.0.0)
21
- activerecord (3.2.2)
22
- activemodel (= 3.2.2)
23
- activesupport (= 3.2.2)
24
- arel (~> 3.0.2)
25
- tzinfo (~> 0.3.29)
26
- activeresource (3.2.2)
27
- activemodel (= 3.2.2)
28
- activesupport (= 3.2.2)
29
- activesupport (3.2.2)
30
- i18n (~> 0.6)
31
- multi_json (~> 1.0)
32
- arel (3.0.2)
33
- bcrypt-ruby (3.0.1)
34
- bson (1.6.1)
35
- builder (3.0.0)
36
- capybara (1.1.2)
37
- mime-types (>= 1.16)
38
- nokogiri (>= 1.3.3)
39
- rack (>= 1.0.0)
40
- rack-test (>= 0.5.4)
41
- selenium-webdriver (~> 2.0)
42
- xpath (~> 0.1.4)
43
- childprocess (0.3.1)
44
- ffi (~> 1.0.6)
45
- diff-lcs (1.1.3)
46
- erubis (2.7.0)
47
- faraday (0.8.4)
48
- multipart-post (~> 1.1)
49
- ffi (1.0.11)
50
- git (1.2.5)
51
- hike (1.2.1)
52
- httpauth (0.2.0)
53
- i18n (0.6.0)
54
- jeweler (1.8.3)
55
- bundler (~> 1.0)
56
- git (>= 1.2.5)
57
- rake
58
- rdoc
59
- journey (1.0.3)
60
- json (1.7.7)
61
- jwt (0.1.5)
62
- multi_json (>= 1.0)
63
- mail (2.4.4)
64
- i18n (>= 0.4.0)
65
- mime-types (~> 1.16)
66
- treetop (~> 1.4.8)
67
- mime-types (1.18)
68
- mongo (1.6.1)
69
- bson (~> 1.6.1)
70
- mongo_mapper (0.11.1)
71
- activemodel (~> 3.0)
72
- activesupport (~> 3.0)
73
- plucky (~> 0.4.0)
74
- mongoid (2.4.7)
75
- activemodel (~> 3.1)
76
- mongo (~> 1.3)
77
- tzinfo (~> 0.3.22)
78
- multi_json (1.3.2)
79
- multipart-post (1.1.5)
80
- nokogiri (1.5.2)
81
- oauth (0.4.5)
82
- oauth2 (0.8.0)
83
- faraday (~> 0.8)
84
- httpauth (~> 0.1)
85
- jwt (~> 0.1.4)
86
- multi_json (~> 1.0)
87
- rack (~> 1.2)
88
- plucky (0.4.4)
89
- mongo (~> 1.5)
90
- polyglot (0.3.3)
91
- rack (1.4.1)
92
- rack-cache (1.2)
93
- rack (>= 0.4)
94
- rack-ssl (1.3.2)
95
- rack
96
- rack-test (0.6.1)
97
- rack (>= 1.0)
98
- rails (3.2.2)
99
- actionmailer (= 3.2.2)
100
- actionpack (= 3.2.2)
101
- activerecord (= 3.2.2)
102
- activeresource (= 3.2.2)
103
- activesupport (= 3.2.2)
104
- bundler (~> 1.0)
105
- railties (= 3.2.2)
106
- railties (3.2.2)
107
- actionpack (= 3.2.2)
108
- activesupport (= 3.2.2)
109
- rack-ssl (~> 1.3.2)
110
- rake (>= 0.8.7)
111
- rdoc (~> 3.4)
112
- thor (~> 0.14.6)
113
- rake (0.9.2.2)
114
- rdoc (3.12)
115
- json (~> 1.4)
116
- rspec (2.5.0)
117
- rspec-core (~> 2.5.0)
118
- rspec-expectations (~> 2.5.0)
119
- rspec-mocks (~> 2.5.0)
120
- rspec-core (2.5.2)
121
- rspec-expectations (2.5.0)
122
- diff-lcs (~> 1.1.2)
123
- rspec-mocks (2.5.0)
124
- rspec-rails (2.5.0)
125
- actionpack (~> 3.0)
126
- activesupport (~> 3.0)
127
- railties (~> 3.0)
128
- rspec (~> 2.5.0)
129
- rubyzip (0.9.6.1)
130
- selenium-webdriver (2.20.0)
131
- childprocess (>= 0.2.5)
132
- ffi (~> 1.0)
133
- multi_json (~> 1.0)
134
- rubyzip
135
- simplecov (0.6.1)
136
- multi_json (~> 1.0)
137
- simplecov-html (~> 0.5.3)
138
- simplecov-html (0.5.3)
139
- sprockets (2.1.2)
140
- hike (~> 1.2)
141
- rack (~> 1.0)
142
- tilt (~> 1.1, != 1.3.0)
143
- sqlite3 (1.3.7)
144
- thor (0.14.6)
145
- tilt (1.3.3)
146
- timecop (0.3.5)
147
- treetop (1.4.10)
148
- polyglot
149
- polyglot (>= 0.3.1)
150
- tzinfo (0.3.32)
151
- xpath (0.1.4)
152
- nokogiri (~> 1.3)
153
- yard (0.6.8)
154
-
155
- PLATFORMS
156
- ruby
157
-
158
- DEPENDENCIES
159
- abstract (>= 1.0.0)
160
- bcrypt-ruby (~> 3.0.0)
161
- bundler (>= 1.1.0)
162
- capybara
163
- jeweler (~> 1.8.3)
164
- json (>= 1.7.7)
165
- mongo_mapper
166
- mongoid (~> 2.4.4)
167
- oauth (~> 0.4.4)
168
- oauth2 (~> 0.8.0)
169
- rails (>= 3.0.0)
170
- rspec (~> 2.5.0)
171
- rspec-rails (~> 2.5.0)
172
- simplecov (>= 0.3.8)
173
- sqlite3
174
- timecop
175
- yard (~> 0.6.0)
data/README.rdoc DELETED
@@ -1,261 +0,0 @@
1
- {<img src="https://secure.travis-ci.org/NoamB/sorcery.png" />}[http://travis-ci.org/NoamB/sorcery]
2
-
3
- = sorcery
4
- Magical Authentication for Rails 3.
5
- Supports ActiveRecord, Mongoid and MongoMapper.
6
-
7
- Inspired by restful_authentication, Authlogic and Devise.
8
- Crypto code taken almost unchanged from Authlogic.
9
- OAuth code inspired by OmniAuth and Ryan Bates's railscasts about it.
10
-
11
- == Philosophy
12
-
13
-
14
- Sorcery is a stripped-down, bare-bones authentication library, with which you can write your own authentication flow.
15
- It was built with a few goals in mind:
16
-
17
- * Less is more - less than 20 public methods to remember for the entire feature-set make the lib easy to 'get'.
18
- * No built-in or generated code - use the library's methods inside *your own* MVC structures, and don't fight to fix someone else's.
19
- * Magic yes, Voodoo no - the lib should be easy to hack for most developers.
20
- * Configuration over Confusion - Centralized (1 file), Simple & short configuration as possible, not drowning in syntactic sugar.
21
- * Keep MVC cleanly separated - DB is for models, sessions are for controllers. Models stay unaware of sessions.
22
-
23
- Hopefully, I've achieved this. If not, let me know.
24
-
25
-
26
- == Useful Links:
27
-
28
- Railscast: http://railscasts.com/episodes/283-authentication-with-sorcery
29
-
30
- Example Rails 3 app using sorcery: https://github.com/NoamB/sorcery-example-app
31
-
32
- Documentation: http://rubydoc.info/gems/sorcery/0.8.2/frames
33
-
34
- Check out the tutorials in the github wiki!
35
-
36
-
37
- == API Summary
38
-
39
-
40
- Below is a summary of the library methods. Most method names are self explaining and the rest are commented:
41
-
42
- # core
43
- require_login # this is a before filter
44
- login(username,password,remember_me = false)
45
- auto_login(user)# login without credentials
46
- logout
47
- logged_in? # available to view
48
- current_user # available to view
49
- 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.
50
- @user.external? # external users, such as facebook/twitter etc.
51
- User.authenticates_with_sorcery!
52
-
53
- # activity logging
54
- current_users
55
-
56
- # http basic auth
57
- require_login_from_http_basic # this is a before filter
58
-
59
- # external
60
- login_at(provider) # sends the user to an external service (twitter etc.) to authenticate.
61
- login_from(provider) # tries to login from the external provider's callback.
62
- create_from(provider) # create the user in the local app db.
63
-
64
- # remember me
65
- auto_login(user, should_remember=false) # login without credentials, optional remember_me
66
- remember_me!
67
- forget_me!
68
-
69
- # reset password
70
- User.load_from_reset_password_token(token)
71
- @user.deliver_reset_password_instructions!
72
- @user.change_password!(new_password)
73
-
74
- # user activation
75
- User.load_from_activation_token(token)
76
- @user.activate!
77
-
78
- Please see the tutorials in the github wiki for detailed usage information.
79
-
80
-
81
- == Installation:
82
-
83
-
84
- If using bundler, first add 'sorcery' to your Gemfile:
85
-
86
- gem "sorcery"
87
-
88
- And run
89
-
90
- bundle install
91
-
92
- Otherwise simply
93
-
94
- gem install sorcery
95
-
96
-
97
- == Rails 3 Configuration:
98
-
99
- rails generate sorcery:install
100
-
101
- This will generate the core migration file, the initializer file and the 'User' model class.
102
-
103
- rails generate sorcery:install remember_me reset_password
104
-
105
- This will generate the migrations files for remember_me and reset_password submodules
106
- and will create the initializer file (and add submodules to it), and create the 'User' model class.
107
-
108
- rails generate sorcery:install --model Person
109
-
110
- This will generate the core migration file, the initializer and change the model class
111
- (in the initializer and migration files) to the class 'Person' (and its pluralized version, 'people')
112
-
113
- rails generate sorcery:install http_basic_auth external remember_me --migrations
114
-
115
- This will generate only the migration files for the specified submodules and will
116
- add them to the initializer file.
117
-
118
- Inside the initializer, the comments will tell you what each setting does.
119
-
120
-
121
- == DelayedJob Integration
122
-
123
- By default emails are sent synchronously. You can send them asynchronously by using the
124
- [delayed_job gem](https://github.com/collectiveidea/delayed_job).
125
-
126
- After implementing the `delayed_job` into your project add the code below at the end of
127
- the `config/initializers/sorcery.rb` file. After that all emails will be sent asynchronously.
128
-
129
- module Sorcery
130
- module Model
131
- module InstanceMethods
132
- def generic_send_email(method, mailer)
133
- config = sorcery_config
134
- mail = config.send(mailer).delay.send(config.send(method), self)
135
- end
136
- end
137
- end
138
- end
139
-
140
-
141
- == Single Table Inheritance (STI) Support
142
- STI is supported via a single setting in config/initializers/sorcery.rb.
143
-
144
-
145
- == Full Features List by module:
146
-
147
-
148
- Core (see lib/sorcery/model.rb and lib/sorcery/controller.rb):
149
- * login/logout, optional return user to requested url on login, configurable redirect for non-logged-in users.
150
- * password encryption, algorithms: bcrypt(default), md5, sha1, sha256, sha512, aes256, custom(yours!), none. Configurable stretches and salt.
151
- * configurable attribute names for username, password and email.
152
- * allow multiple fields to serve as username.
153
-
154
- User Activation (see lib/sorcery/model/submodules/user_activation.rb):
155
- * User activation by email with optional success email.
156
- * configurable attribute names.
157
- * configurable mailer, method name, and attribute name.
158
- * configurable temporary token expiration.
159
- * Optionally prevent non-active users to login.
160
-
161
- Reset Password (see lib/sorcery/model/submodules/reset_password.rb):
162
- * Reset password with email verification.
163
- * configurable mailer, method name, and attribute name.
164
- * configurable temporary token expiration.
165
- * configurable time between emails (hammering protection).
166
-
167
- Remember Me (see lib/sorcery/model/submodules/remember_me.rb):
168
- * Remember me with configurable expiration.
169
- * configurable attribute names.
170
-
171
- Session Timeout (see lib/sorcery/controller/submodules/session_timeout.rb):
172
- * Configurable session timeout.
173
- * Optionally session timeout will be calculated from last user action.
174
-
175
- Brute Force Protection (see lib/sorcery/model/submodules/brute_force_protection.rb):
176
- * Brute force login hammering protection.
177
- * configurable logins before lock and lock duration.
178
-
179
- Basic HTTP Authentication (see lib/sorcery/controller/submodules/http_basic_auth.rb):
180
- * A before filter for requesting authentication with HTTP Basic.
181
- * automatic login from HTTP Basic.
182
- * automatic login is disabled if session key changed.
183
-
184
- Activity Logging (see lib/sorcery/model/submodules/activity_logging.rb):
185
- * automatic logging of last login, last logout, last activity time and IP address for last login.
186
- * an easy method of collecting the list of currently logged in users.
187
- * configurable timeout by which to decide whether to include a user in the list of logged in users.
188
-
189
- External (see lib/sorcery/controller/submodules/external.rb):
190
- * OAuth1 and OAuth2 support (currently twitter & facebook)
191
- * configurable db field names and authentications table.
192
-
193
-
194
- == Next Planned Features:
195
-
196
-
197
- I've got some thoughts which include (unordered):
198
- * Passing a block to encrypt, allowing the developer to define his own mix of salting and encrypting
199
- * Forgot username, maybe as part of the reset_password module
200
- * Scoping logins (to a subdomain or another arbitrary field)
201
- * Allowing storing the salt and crypted password in the same DB field for extra security
202
- * Other reset password strategies (security questions?)
203
- * Other brute force protection strategies (captcha)
204
-
205
-
206
- Have an idea? Let me know, and it might get into the gem!
207
-
208
-
209
- == Backward compatibility
210
-
211
-
212
- While the lib is young and evolving fast I'm breaking backward compatibility quite often.
213
- I'm constantly finding better ways to do things and throwing away old ways.
214
- To let you know when things are changing in a non-compatible way, I'm bumping the minor version of the gem.
215
- The patch version changes are backward compatible.
216
-
217
- In short, an app that works with x.3.1 should be able to upgrade to x.3.2 with no code changes.
218
- The same cannot be said about upgrading to x.4.0 and above, however.
219
-
220
- == Upgrading
221
-
222
- Important notes while upgrading:
223
-
224
- * If upgrading from <= 0.6.1 to >= 0.7.0 you need to change 'username_attribute_name' to 'username_attribute_names' in initializer.
225
- * If upgrading from <= v0.5.1 to >= v0.5.2 you need to explicitly set your user_class model in the initializer file.
226
-
227
- # This line must come after the 'user config' block.
228
- config.user_class = User
229
-
230
- * Sinatra support existed until v0.7.0 (including), but was dropped later due to being a maintenance nightmare.
231
-
232
-
233
- == Contributing to sorcery
234
-
235
-
236
- Your feedback is very welcome and will make this gem much much better for you, me and everyone else.
237
- Besides feedback on code, features, suggestions and bug reports, you may want to actually make an impact on the code.
238
- For this:
239
-
240
- * Fork it.
241
- * Fix it.
242
- * Test it.
243
- * Commit it.
244
- * Send me a pull request so I'll... Pull it.
245
-
246
- If you feel sorcery has made your life easier, and you would like to express your thanks via a donation, my paypal email is in the contact details.
247
-
248
-
249
- == Contact
250
-
251
-
252
- Feel free to ask questions using these contact details:
253
-
254
- email: nbenari@gmail.com ( also for paypal )
255
- twitter: @nbenari
256
-
257
-
258
- == Copyright
259
-
260
-
261
- Copyright (c) 2010 Noam Ben Ari (nbenari@gmail.com). See LICENSE.txt for further details.
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.8.2
@@ -1,46 +0,0 @@
1
- require 'oauth'
2
- module Sorcery
3
- module Controller
4
- module Submodules
5
- module External
6
- module Protocols
7
- module Oauth1
8
- def oauth_version
9
- "1.0"
10
- end
11
-
12
- def get_request_token(token=nil,secret=nil)
13
- return ::OAuth::RequestToken.new(get_consumer(), token, secret) if token && secret
14
-
15
- get_consumer.get_request_token(:oauth_callback => @callback_url)
16
- end
17
-
18
- def authorize_url(args)
19
- get_request_token(
20
- args[:request_token],
21
- args[:request_token_secret]
22
- ).authorize_url({
23
- :oauth_callback => @callback_url
24
- })
25
- end
26
-
27
- def get_access_token(args)
28
- get_request_token(
29
- args[:request_token],
30
- args[:request_token_secret]
31
- ).get_access_token({
32
- :oauth_verifier => args[:oauth_verifier]
33
- })
34
- end
35
-
36
- protected
37
-
38
- def get_consumer
39
- ::OAuth::Consumer.new(@key, @secret, :site => @site)
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,49 +0,0 @@
1
- require 'oauth2'
2
- module Sorcery
3
- module Controller
4
- module Submodules
5
- module External
6
- module Protocols
7
- module Oauth2
8
- def oauth_version
9
- "2.0"
10
- end
11
-
12
- def authorize_url(options = {})
13
- client = build_client(options)
14
- client.auth_code.authorize_url(
15
- :redirect_uri => @callback_url,
16
- :scope => @scope,
17
- :display => @display
18
- )
19
- end
20
-
21
- def get_access_token(args, options = {})
22
- client = build_client(options)
23
- client.auth_code.get_token(
24
- args[:code],
25
- {
26
- :redirect_uri => @callback_url,
27
- :parse => options.delete(:parse)
28
- },
29
- options
30
- )
31
- end
32
-
33
- def build_client(options = {})
34
- defaults = {
35
- :site => @site,
36
- :ssl => { :ca_file => Config.ca_file }
37
- }
38
- ::OAuth2::Client.new(
39
- @key,
40
- @secret,
41
- defaults.merge!(options)
42
- )
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,21 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Submodules
4
- module External
5
- module Providers
6
- module Base
7
- module BaseClient
8
- def self.included(base)
9
- base.module_eval do
10
- class << self
11
- attr_accessor :original_callback_url
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,98 +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 facebook.com.
7
- # When included in the 'config.providers' option, it adds a new option, 'config.facebook'.
8
- # Via this new option you can configure Facebook specific settings like your app's key and secret.
9
- #
10
- # config.facebook.key = <key>
11
- # config.facebook.secret = <secret>
12
- # ...
13
- #
14
- module Facebook
15
- def self.included(base)
16
- base.module_eval do
17
- class << self
18
- attr_reader :facebook # access to facebook_client.
19
-
20
- def merge_facebook_defaults!
21
- @defaults.merge!(:@facebook => FacebookClient)
22
- end
23
- end
24
- merge_facebook_defaults!
25
- update!
26
- end
27
- end
28
-
29
- module FacebookClient
30
- include Base::BaseClient
31
- class << self
32
- attr_accessor :key,
33
- :secret,
34
- :callback_url,
35
- :site,
36
- :user_info_path,
37
- :scope,
38
- :user_info_mapping,
39
- :display,
40
- :access_permissions
41
- attr_reader :access_token
42
-
43
- include Protocols::Oauth2
44
-
45
- def init
46
- @site = "https://graph.facebook.com"
47
- @user_info_path = "/me"
48
- @scope = "email,offline_access"
49
- @user_info_mapping = {}
50
- @display = "page"
51
- @token_url = "oauth/access_token"
52
- @mode = :query
53
- @parse = :query
54
- @param_name = "access_token"
55
- end
56
-
57
- def get_user_hash(access_token)
58
- user_hash = {}
59
- response = access_token.get(@user_info_path)
60
- user_hash[:user_info] = JSON.parse(response.body)
61
- user_hash[:uid] = user_hash[:user_info]['id']
62
- user_hash
63
- end
64
-
65
- def has_callback?
66
- true
67
- end
68
-
69
- # calculates and returns the url to which the user should be redirected,
70
- # to get authenticated at the external provider's site.
71
- def login_url(params,session)
72
- self.authorize_url
73
- end
74
-
75
- # overrides oauth2#authorize_url to allow customized scope.
76
- def authorize_url
77
- @scope = self.access_permissions.present? ? self.access_permissions.join(",") : @scope
78
- super
79
- end
80
-
81
- # tries to login the user from access token
82
- def process_callback(params,session)
83
- args = {}
84
- options = { :token_url => @token_url, :mode => @mode, :param_name => @param_name, :parse => @parse }
85
- args.merge!({:code => params[:code]}) if params[:code]
86
- return self.get_access_token(args, options)
87
- end
88
-
89
- end
90
- init
91
- end
92
-
93
- end
94
- end
95
- end
96
- end
97
- end
98
- end