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
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ require 'shared_examples/user_brute_force_protection_shared_examples'
4
+
5
+ describe User, "with brute_force_protection submodule", :data_mapper => true do
6
+
7
+ it_behaves_like "rails_3_brute_force_protection_model"
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ require 'shared_examples/user_oauth_shared_examples'
4
+
5
+ describe User, "with oauth submodule", :data_mapper => true do
6
+
7
+ it_behaves_like "rails_3_oauth_model"
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_remember_me_shared_examples'
3
+
4
+ describe User, "with remember_me submodule", :data_mapper => true do
5
+
6
+ it_behaves_like "rails_3_remember_me_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_reset_password_shared_examples'
3
+
4
+ describe User, "with reset_password submodule", :data_mapper => true do
5
+
6
+ it_behaves_like "rails_3_reset_password_model"
7
+
8
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rails_app/app/mailers/sorcery_mailer'
4
+ require 'shared_examples/user_shared_examples'
5
+
6
+ describe User, "with no submodules (core)", :data_mapper => true do
7
+ before(:all) do
8
+ sorcery_reload!
9
+ end
10
+
11
+ context "when app has plugin loaded" do
12
+ it "User responds to .authenticates_with_sorcery!" do
13
+ expect(User).to respond_to :authenticates_with_sorcery!
14
+ end
15
+ end
16
+
17
+ # ----------------- PLUGIN CONFIGURATION -----------------------
18
+
19
+ it_should_behave_like "rails_3_core_model"
20
+
21
+ describe "external users" do
22
+
23
+ it_should_behave_like "external_user"
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_activation_shared_examples'
4
+
5
+ describe User, "with activation submodule", :mongo_mapper => true do
6
+
7
+ it_behaves_like "rails_3_activation_model"
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_activity_logging_shared_examples'
3
+
4
+ describe User, "with activity logging submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_activity_logging_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_brute_force_protection_shared_examples'
3
+
4
+ describe User, "with brute_force_protection submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_brute_force_protection_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_oauth_shared_examples'
3
+
4
+ describe User, "with oauth submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_oauth_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_remember_me_shared_examples'
3
+
4
+ describe User, "with remember_me submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_remember_me_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_reset_password_shared_examples'
3
+
4
+ describe User, "with reset_password submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_reset_password_model"
7
+
8
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_shared_examples'
4
+
5
+ describe User, "with no submodules (core)", :mongo_mapper => true do
6
+ before(:all) do
7
+ sorcery_reload!
8
+ end
9
+
10
+ describe User, "when app has plugin loaded" do
11
+ it "User responds to .authenticates_with_sorcery!" do
12
+ expect(User).to respond_to :authenticates_with_sorcery!
13
+ end
14
+ end
15
+
16
+ # ----------------- PLUGIN CONFIGURATION -----------------------
17
+
18
+ it_should_behave_like "rails_3_core_model"
19
+
20
+ describe "external users" do
21
+
22
+ it_should_behave_like "external_user"
23
+
24
+ end
25
+
26
+ context "when inherited" do
27
+ it "inherits mongo_mapper keys" do
28
+ User.class_eval do
29
+ key :blabla
30
+ end
31
+ class SubUser < User
32
+ end
33
+
34
+ expect(SubUser.keys).to include("blabla")
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_activation_shared_examples'
4
+
5
+ describe User, "with activation submodule", :mongoid => true do
6
+
7
+ it_behaves_like "rails_3_activation_model"
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_activity_logging_shared_examples'
3
+
4
+ describe User, "with activity logging submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_activity_logging_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_brute_force_protection_shared_examples'
3
+
4
+ describe User, "with brute_force_protection submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_brute_force_protection_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_oauth_shared_examples'
3
+
4
+ describe User, "with oauth submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_oauth_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_remember_me_shared_examples'
3
+
4
+ describe User, "with remember_me submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_remember_me_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_reset_password_shared_examples'
3
+
4
+ describe User, "with reset_password submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_reset_password_model"
7
+
8
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_shared_examples'
4
+
5
+ describe User, "with no submodules (core)", :mongoid => true do
6
+ before(:all) do
7
+ sorcery_reload!
8
+ end
9
+
10
+ context "when app has plugin loaded" do
11
+ it "User responds to .authenticates_with_sorcery!" do
12
+ expect(User).to respond_to :authenticates_with_sorcery!
13
+ end
14
+ end
15
+
16
+ # ----------------- PLUGIN CONFIGURATION -----------------------
17
+
18
+ it_should_behave_like "rails_3_core_model"
19
+
20
+ describe "external users" do
21
+
22
+ it_should_behave_like "external_user"
23
+
24
+ end
25
+
26
+ context "when inherited" do
27
+ it "inherits mongoid fields" do
28
+ User.class_eval do
29
+ field :blabla
30
+ end
31
+ class SubUser < User
32
+ end
33
+
34
+ expect(SubUser.fields).to include("blabla")
35
+ end
36
+ end
37
+
38
+ describe "increment" do
39
+ it "increments attribute" do
40
+ User.class_eval do
41
+ field :some_number, type: Integer
42
+ end
43
+
44
+ user = User.new(some_number: 3)
45
+ user.sorcery_adapter.increment(:some_number)
46
+
47
+ expect(user.some_number).to eql 4
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,21 @@
1
+ require 'sorcery'
2
+
3
+ ActiveRecord::Migration.verbose = false
4
+ # ActiveRecord::Base.logger = Logger.new(nil)
5
+ # ActiveRecord::Base.include_root_in_json = true
6
+
7
+ class TestUser < ActiveRecord::Base
8
+ authenticates_with_sorcery!
9
+ end
10
+
11
+ def setup_orm
12
+ ActiveRecord::Migrator.migrate(migrations_path)
13
+ end
14
+
15
+ def teardown_orm
16
+ ActiveRecord::Migrator.rollback(migrations_path)
17
+ end
18
+
19
+ def migrations_path
20
+ Rails.root.join("db", "migrate", "core")
21
+ end
@@ -0,0 +1,48 @@
1
+ require 'data_mapper'
2
+ require 'dm-migrations'
3
+ require 'sorcery'
4
+
5
+ #DataMapper.setup(:default, 'sqlite::memory:')
6
+ # NOTE
7
+ # 1. Problems with Time fields, hh mm ss values.
8
+ #DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/../rails_app/test.sqlite3")
9
+
10
+ # MySQL
11
+ # NOTE
12
+ # 1. Create test database.
13
+ # 2. DM creates tables case insensitive by default.
14
+ # -
15
+ #DataMapper.setup(:default, "mysql://root:<password>@localhost/sorcery_test")
16
+ DataMapper.setup(:default, "mysql://root@127.0.0.1/sorcery_test")
17
+
18
+ # Redis
19
+ # NOTE
20
+ # 1. Submodule activity_logging is not supported.
21
+ # 2. case sensitive.
22
+ #DataMapper.setup(:default, {
23
+ # :adapter => 'redis',
24
+ # :host => 'localhost',
25
+ # :port => 6379,
26
+ #})
27
+
28
+ class TestUser
29
+ include DataMapper::Resource
30
+ property :id, Serial
31
+ authenticates_with_sorcery!
32
+ end
33
+
34
+ def setup_orm
35
+ TestUser.finalize
36
+ DataMapper.auto_migrate!
37
+ end
38
+
39
+ module Sorcery
40
+ module TestHelpers
41
+ module Internal
42
+ def update_model(&block)
43
+ User.class_exec(&block)
44
+ User.finalize
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ require 'mongo_mapper'
2
+ require 'sorcery'
3
+
4
+ MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
5
+ MongoMapper.database = "sorcery_mongomapper_test"
6
+
7
+ class TestUser
8
+ include MongoMapper::Document
9
+ authenticates_with_sorcery!
10
+ end
@@ -0,0 +1,22 @@
1
+ require 'mongoid'
2
+ require 'sorcery'
3
+
4
+ Mongoid.configure do |config|
5
+ database = "sorcery_mongoid_test"
6
+ if config.respond_to?(:connect_to)
7
+ config.connect_to(database)
8
+ else
9
+ config.master = Mongo::Connection.new.db(database)
10
+ end
11
+
12
+ config.use_utc = true
13
+ config.include_root_in_json = true
14
+ end
15
+
16
+ class TestUser
17
+ include Mongoid::Document
18
+ end
19
+
20
+ def setup_orm
21
+ Mongoid.purge!
22
+ end
@@ -1,6 +1,5 @@
1
1
  class User < ActiveRecord::Base
2
- attr_accessible :username, :email, :password, :password_confirmation, :authentications_attributes
3
-
4
2
  has_many :authentications, :dependent => :destroy
3
+ has_many :user_providers, :dependent => :destroy
5
4
  accepts_nested_attributes_for :authentications
6
5
  end
@@ -0,0 +1,3 @@
1
+ class UserProvider < ActiveRecord::Base
2
+ belongs_to :user
3
+ end
@@ -0,0 +1,285 @@
1
+ require 'oauth'
2
+
3
+ class SorceryController < ActionController::Base
4
+ protect_from_forgery
5
+
6
+ before_filter :require_login_from_http_basic, only: [:test_http_basic_auth]
7
+ before_filter :require_login, only: [:test_logout, :test_should_be_logged_in, :some_action]
8
+
9
+ def index
10
+ end
11
+
12
+ def some_action
13
+ render nothing: true
14
+ end
15
+
16
+ def some_action_making_a_non_persisted_change_to_the_user
17
+ current_user.email = 'to_be_ignored'
18
+ render nothing: true
19
+ end
20
+
21
+ def test_login
22
+ @user = login(params[:email], params[:password])
23
+ render nothing: true
24
+ end
25
+
26
+ def test_auto_login
27
+ @user = User.first
28
+ auto_login(@user)
29
+ @result = current_user
30
+ render nothing: true
31
+ end
32
+
33
+ def test_return_to
34
+ @user = login(params[:email], params[:password])
35
+ redirect_back_or_to(:index, notice: 'haha!')
36
+ end
37
+
38
+ def test_logout
39
+ logout
40
+ render nothing: true
41
+ end
42
+
43
+ def test_logout_with_remember
44
+ remember_me!
45
+ logout
46
+ render nothing: true
47
+ end
48
+
49
+ def test_login_with_remember
50
+ @user = login(params[:email], params[:password])
51
+ remember_me!
52
+
53
+ render nothing: true
54
+ end
55
+
56
+ def test_login_with_remember_in_login
57
+ @user = login(params[:email], params[:password], params[:remember])
58
+
59
+ render nothing: true
60
+ end
61
+
62
+ def test_login_from_cookie
63
+ @user = current_user
64
+ render nothing: true
65
+ end
66
+
67
+ def test_not_authenticated_action
68
+ render text: 'test_not_authenticated_action'
69
+ end
70
+
71
+ def test_should_be_logged_in
72
+ render nothing: true
73
+ end
74
+
75
+ def test_http_basic_auth
76
+ render text: 'HTTP Basic Auth'
77
+ end
78
+
79
+ def login_at_test_twitter
80
+ login_at(:twitter)
81
+ end
82
+
83
+ alias :login_at_test :login_at_test_twitter
84
+
85
+ def login_at_test_facebook
86
+ login_at(:facebook)
87
+ end
88
+
89
+ def login_at_test_github
90
+ login_at(:github)
91
+ end
92
+
93
+ def login_at_test_google
94
+ login_at(:google)
95
+ end
96
+
97
+ def login_at_test_liveid
98
+ login_at(:liveid)
99
+ end
100
+
101
+ def login_at_test_jira
102
+ login_at(:jira)
103
+ end
104
+
105
+ def login_at_test_vk
106
+ login_at(:vk)
107
+ end
108
+
109
+ def login_at_test_salesforce
110
+ login_at(:salesforce)
111
+ end
112
+
113
+ def login_at_test_with_state
114
+ login_at(:facebook, {state: 'bla'})
115
+ end
116
+
117
+ def test_login_from_twitter
118
+ if @user = login_from(:twitter)
119
+ redirect_to 'bla', notice: 'Success!'
120
+ else
121
+ redirect_to 'blu', alert: 'Failed!'
122
+ end
123
+ end
124
+
125
+ alias :test_login_from :test_login_from_twitter
126
+
127
+ def test_login_from_facebook
128
+ if @user = login_from(:facebook)
129
+ redirect_to 'bla', notice: 'Success!'
130
+ else
131
+ redirect_to 'blu', alert: 'Failed!'
132
+ end
133
+ end
134
+
135
+ def test_login_from_github
136
+ if @user = login_from(:github)
137
+ redirect_to 'bla', notice: 'Success!'
138
+ else
139
+ redirect_to 'blu', alert: 'Failed!'
140
+ end
141
+ end
142
+
143
+ def test_login_from_google
144
+ if @user = login_from(:google)
145
+ redirect_to 'bla', notice: 'Success!'
146
+ else
147
+ redirect_to 'blu', alert: 'Failed!'
148
+ end
149
+ end
150
+
151
+ def test_login_from_liveid
152
+ if @user = login_from(:liveid)
153
+ redirect_to 'bla', notice: 'Success!'
154
+ else
155
+ redirect_to 'blu', alert: 'Failed!'
156
+ end
157
+ end
158
+
159
+ def test_login_from_vk
160
+ if @user = login_from(:vk)
161
+ redirect_to 'bla', notice: 'Success!'
162
+ else
163
+ redirect_to 'blu', alert: 'Failed!'
164
+ end
165
+ end
166
+
167
+ def test_login_from_jira
168
+ if @user = login_from(:jira)
169
+ redirect_to 'bla', notice: 'Success!'
170
+ else
171
+ redirect_to 'blu', alert: 'Failed!'
172
+ end
173
+ end
174
+
175
+ def test_login_from_salesforce
176
+ if @user = login_from(:salesforce)
177
+ redirect_to 'bla', notice: 'Success!'
178
+ else
179
+ redirect_to 'blu', alert: 'Failed!'
180
+ end
181
+ end
182
+
183
+ def test_return_to_with_external_twitter
184
+ if @user = login_from(:twitter)
185
+ redirect_back_or_to 'bla', notice: 'Success!'
186
+ else
187
+ redirect_to 'blu', alert: 'Failed!'
188
+ end
189
+ end
190
+
191
+ def test_return_to_with_external_jira
192
+ if @user = login_from(:jira)
193
+ redirect_back_or_to 'bla', notice: 'Success!'
194
+ else
195
+ redirect_to 'blu', alert: 'Failed!'
196
+ end
197
+ end
198
+
199
+ alias :test_return_to_with_external :test_return_to_with_external_twitter
200
+
201
+ def test_return_to_with_external_facebook
202
+ if @user = login_from(:facebook)
203
+ redirect_back_or_to 'bla', notice: 'Success!'
204
+ else
205
+ redirect_to 'blu', alert: 'Failed!'
206
+ end
207
+ end
208
+
209
+ def test_return_to_with_external_github
210
+ if @user = login_from(:github)
211
+ redirect_back_or_to 'bla', notice: 'Success!'
212
+ else
213
+ redirect_to 'blu', alert: 'Failed!'
214
+ end
215
+ end
216
+
217
+ def test_return_to_with_external_google
218
+ if @user = login_from(:google)
219
+ redirect_back_or_to 'bla', notice: 'Success!'
220
+ else
221
+ redirect_to 'blu', alert: 'Failed!'
222
+ end
223
+ end
224
+
225
+ def test_return_to_with_external_liveid
226
+ if @user = login_from(:liveid)
227
+ redirect_back_or_to 'bla', notice: 'Success!'
228
+ else
229
+ redirect_to 'blu', alert: 'Failed!'
230
+ end
231
+ end
232
+
233
+ def test_return_to_with_external_vk
234
+ if @user = login_from(:vk)
235
+ redirect_back_or_to 'bla', notice: 'Success!'
236
+ else
237
+ redirect_to 'blu', alert: 'Failed!'
238
+ end
239
+ end
240
+
241
+ def test_return_to_with_external_salesforce
242
+ if @user = login_from(:salesforce)
243
+ redirect_back_or_to 'bla', notice: 'Success!'
244
+ else
245
+ redirect_to 'blu', alert: 'Failed!'
246
+ end
247
+ end
248
+
249
+ def test_create_from_provider
250
+ provider = params[:provider]
251
+ login_from(provider)
252
+ if @user = create_from(provider)
253
+ redirect_to 'bla', notice: 'Success!'
254
+ else
255
+ redirect_to 'blu', alert: 'Failed!'
256
+ end
257
+ end
258
+
259
+ def test_add_second_provider
260
+ provider = params[:provider]
261
+ if logged_in?
262
+ if @user = add_provider_to_user(provider)
263
+ redirect_to "bla", :notice => "Success!"
264
+ else
265
+ redirect_to "blu", :alert => "Failed!"
266
+ end
267
+ end
268
+ end
269
+
270
+ def test_create_from_provider_with_block
271
+ provider = params[:provider]
272
+ login_from(provider)
273
+ @user = create_from(provider) do |user|
274
+ # check uniqueness of email
275
+ # User.where(email: user.email).empty?
276
+ false
277
+ end
278
+ if @user
279
+ redirect_to 'bla', notice: 'Success!'
280
+ else
281
+ redirect_to 'blu', alert: 'Failed!'
282
+ end
283
+ end
284
+
285
+ end
@@ -0,0 +1,8 @@
1
+ class Authentication
2
+ include DataMapper::Resource
3
+
4
+ property :id, Serial
5
+ property :uid, Integer
6
+ property :provider, String
7
+ belongs_to :user
8
+ end