sorcery 0.7.0 → 0.8.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 (204) hide show
  1. data/.travis.yml +3 -0
  2. data/Gemfile +9 -6
  3. data/Gemfile.lock +106 -75
  4. data/README.rdoc +42 -55
  5. data/Rakefile +32 -7
  6. data/VERSION +1 -1
  7. data/lib/generators/sorcery/USAGE +22 -0
  8. data/lib/generators/sorcery/install_generator.rb +77 -0
  9. data/lib/generators/sorcery/templates/initializer.rb +417 -0
  10. data/lib/generators/sorcery/templates/migration/activity_logging.rb +17 -0
  11. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +13 -0
  12. data/lib/generators/{sorcery_migration/templates → sorcery/templates/migration}/core.rb +2 -2
  13. data/lib/generators/{sorcery_migration/templates → sorcery/templates/migration}/external.rb +1 -1
  14. data/lib/generators/sorcery/templates/migration/remember_me.rb +15 -0
  15. data/lib/generators/sorcery/templates/migration/reset_password.rb +17 -0
  16. data/lib/generators/sorcery/templates/migration/user_activation.rb +17 -0
  17. data/lib/sorcery/controller/submodules/activity_logging.rb +8 -11
  18. data/lib/sorcery/controller/submodules/brute_force_protection.rb +2 -3
  19. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +25 -10
  20. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +20 -5
  21. data/lib/sorcery/controller/submodules/external/providers/github.rb +15 -4
  22. data/lib/sorcery/controller/submodules/external/providers/google.rb +90 -0
  23. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +101 -0
  24. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +91 -0
  25. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +3 -2
  26. data/lib/sorcery/controller/submodules/external/providers/vkontakte.rb +94 -0
  27. data/lib/sorcery/controller/submodules/external.rb +89 -15
  28. data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -1
  29. data/lib/sorcery/controller/submodules/remember_me.rb +26 -15
  30. data/lib/sorcery/controller/submodules/session_timeout.rb +3 -3
  31. data/lib/sorcery/controller.rb +55 -46
  32. data/lib/sorcery/crypto_providers/bcrypt.rb +1 -0
  33. data/lib/sorcery/model/adapters/active_record.rb +21 -1
  34. data/lib/sorcery/model/adapters/mongo_mapper.rb +56 -0
  35. data/lib/sorcery/model/adapters/mongoid.rb +23 -4
  36. data/lib/sorcery/model/submodules/activity_logging.rb +4 -4
  37. data/lib/sorcery/model/submodules/brute_force_protection.rb +54 -15
  38. data/lib/sorcery/model/submodules/remember_me.rb +12 -7
  39. data/lib/sorcery/model/submodules/reset_password.rb +27 -11
  40. data/lib/sorcery/model/submodules/user_activation.rb +27 -8
  41. data/lib/sorcery/model/temporary_token.rb +4 -2
  42. data/lib/sorcery/model.rb +78 -47
  43. data/lib/sorcery/railties/tasks.rake +2 -0
  44. data/lib/sorcery.rb +10 -8
  45. data/sorcery.gemspec +107 -228
  46. data/spec/Gemfile +1 -1
  47. data/spec/Gemfile.lock +27 -23
  48. data/spec/README.md +12 -7
  49. data/spec/rails3/Gemfile +3 -3
  50. data/spec/rails3/Gemfile.lock +62 -55
  51. data/spec/rails3/app/controllers/application_controller.rb +85 -2
  52. data/spec/rails3/app/mailers/sorcery_mailer.rb +7 -0
  53. data/spec/rails3/app/views/sorcery_mailer/send_unlock_token_email.text.erb +1 -0
  54. data/spec/rails3/config/environments/in_memory.rb +35 -0
  55. data/spec/rails3/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +2 -0
  56. data/spec/rails3/spec/controller_activity_logging_spec.rb +16 -6
  57. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +25 -3
  58. data/spec/rails3/spec/controller_oauth2_spec.rb +260 -20
  59. data/spec/rails3/spec/controller_oauth_spec.rb +111 -6
  60. data/spec/rails3/spec/controller_session_timeout_spec.rb +4 -4
  61. data/spec/rails3/spec/controller_spec.rb +37 -2
  62. data/spec/rails3/spec/integration_spec.rb +15 -15
  63. data/spec/rails3/spec/spec_helper.rb +0 -2
  64. data/spec/rails3_mongo_mapper/.gitignore +4 -0
  65. data/spec/rails3_mongo_mapper/.rspec +1 -0
  66. data/spec/{sinatra_modular → rails3_mongo_mapper}/Gemfile +6 -5
  67. data/spec/rails3_mongo_mapper/Gemfile.lock +156 -0
  68. data/spec/{sinatra → rails3_mongo_mapper}/Rakefile +3 -3
  69. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +122 -0
  70. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +2 -0
  71. data/spec/rails3_mongo_mapper/app/models/authentication.rb +6 -0
  72. data/spec/rails3_mongo_mapper/app/models/user.rb +5 -0
  73. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +14 -0
  74. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +17 -0
  75. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +9 -0
  76. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.html.erb +17 -0
  77. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +9 -0
  78. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +16 -0
  79. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +8 -0
  80. data/spec/rails3_mongo_mapper/config/application.rb +51 -0
  81. data/spec/rails3_mongo_mapper/config/boot.rb +13 -0
  82. data/spec/rails3_mongo_mapper/config/environment.rb +5 -0
  83. data/spec/rails3_mongo_mapper/config/environments/development.rb +30 -0
  84. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  85. data/spec/rails3_mongo_mapper/config/environments/production.rb +49 -0
  86. data/spec/rails3_mongo_mapper/config/environments/test.rb +35 -0
  87. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +7 -0
  88. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +10 -0
  89. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +5 -0
  90. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +2 -0
  91. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +7 -0
  92. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +8 -0
  93. data/spec/rails3_mongo_mapper/config/locales/en.yml +5 -0
  94. data/spec/rails3_mongo_mapper/config/routes.rb +59 -0
  95. data/spec/rails3_mongo_mapper/config.ru +4 -0
  96. data/spec/rails3_mongo_mapper/db/schema.rb +23 -0
  97. data/spec/rails3_mongo_mapper/db/seeds.rb +7 -0
  98. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  99. data/spec/rails3_mongo_mapper/public/404.html +26 -0
  100. data/spec/rails3_mongo_mapper/public/422.html +26 -0
  101. data/spec/rails3_mongo_mapper/public/500.html +26 -0
  102. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  103. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  104. data/spec/rails3_mongo_mapper/public/javascripts/application.js +2 -0
  105. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +965 -0
  106. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +974 -0
  107. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +1123 -0
  108. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +6001 -0
  109. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +175 -0
  110. data/spec/rails3_mongo_mapper/public/robots.txt +5 -0
  111. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  112. data/spec/rails3_mongo_mapper/script/rails +6 -0
  113. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +170 -0
  114. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +27 -0
  115. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +55 -0
  116. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +9 -0
  117. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +8 -0
  118. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +8 -0
  119. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +8 -0
  120. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +8 -0
  121. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +8 -0
  122. data/spec/rails3_mongo_mapper/spec/user_spec.rb +37 -0
  123. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  124. data/spec/rails3_mongoid/Gemfile +2 -1
  125. data/spec/rails3_mongoid/Gemfile.lock +47 -42
  126. data/spec/rails3_mongoid/app/controllers/application_controller.rb +19 -0
  127. data/spec/rails3_mongoid/config/mongoid.yml +1 -1
  128. data/spec/rails3_mongoid/script/rails +0 -0
  129. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +105 -0
  130. data/spec/rails3_mongoid/spec/controller_spec.rb +52 -1
  131. data/spec/rails3_mongoid/spec/user_spec.rb +1 -0
  132. data/spec/shared_examples/controller_oauth2_shared_examples.rb +20 -1
  133. data/spec/shared_examples/controller_oauth_shared_examples.rb +18 -0
  134. data/spec/shared_examples/user_activation_shared_examples.rb +72 -42
  135. data/spec/shared_examples/user_remember_me_shared_examples.rb +1 -1
  136. data/spec/shared_examples/user_reset_password_shared_examples.rb +81 -28
  137. data/spec/shared_examples/user_shared_examples.rb +29 -1
  138. data/spec/sorcery_crypto_providers_spec.rb +14 -1
  139. metadata +111 -229
  140. data/lib/generators/sorcery_migration/sorcery_migration_generator.rb +0 -24
  141. data/lib/generators/sorcery_migration/templates/activity_logging.rb +0 -17
  142. data/lib/generators/sorcery_migration/templates/brute_force_protection.rb +0 -11
  143. data/lib/generators/sorcery_migration/templates/remember_me.rb +0 -15
  144. data/lib/generators/sorcery_migration/templates/reset_password.rb +0 -17
  145. data/lib/generators/sorcery_migration/templates/user_activation.rb +0 -17
  146. data/lib/sorcery/controller/adapters/sinatra.rb +0 -115
  147. data/lib/sorcery/initializers/initializer.rb +0 -199
  148. data/lib/sorcery/sinatra.rb +0 -4
  149. data/lib/sorcery/test_helpers/internal/sinatra.rb +0 -74
  150. data/lib/sorcery/test_helpers/internal/sinatra_modular.rb +0 -74
  151. data/lib/sorcery/test_helpers/sinatra.rb +0 -88
  152. data/spec/rails3/Rakefile.unused +0 -7
  153. data/spec/sinatra/Gemfile +0 -15
  154. data/spec/sinatra/Gemfile.lock +0 -115
  155. data/spec/sinatra/authentication.rb +0 -3
  156. data/spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb +0 -17
  157. data/spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -17
  158. data/spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -11
  159. data/spec/sinatra/db/migrate/core/20101224223620_create_users.rb +0 -16
  160. data/spec/sinatra/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  161. data/spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -15
  162. data/spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -13
  163. data/spec/sinatra/filters.rb +0 -27
  164. data/spec/sinatra/modular.rb +0 -157
  165. data/spec/sinatra/myapp.rb +0 -133
  166. data/spec/sinatra/spec/controller_activity_logging_spec.rb +0 -85
  167. data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +0 -70
  168. data/spec/sinatra/spec/controller_http_basic_auth_spec.rb +0 -53
  169. data/spec/sinatra/spec/controller_oauth2_spec.rb +0 -96
  170. data/spec/sinatra/spec/controller_oauth_spec.rb +0 -100
  171. data/spec/sinatra/spec/controller_remember_me_spec.rb +0 -64
  172. data/spec/sinatra/spec/controller_session_timeout_spec.rb +0 -57
  173. data/spec/sinatra/spec/controller_spec.rb +0 -127
  174. data/spec/sinatra/spec/spec_helper.rb +0 -45
  175. data/spec/sinatra/user.rb +0 -6
  176. data/spec/sinatra/views/test_login.erb +0 -4
  177. data/spec/sinatra_modular/Gemfile.lock +0 -115
  178. data/spec/sinatra_modular/Rakefile +0 -11
  179. data/spec/sinatra_modular/authentication.rb +0 -3
  180. data/spec/sinatra_modular/db/migrate/activation/20101224223622_add_activation_to_users.rb +0 -17
  181. data/spec/sinatra_modular/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -17
  182. data/spec/sinatra_modular/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -11
  183. data/spec/sinatra_modular/db/migrate/core/20101224223620_create_users.rb +0 -16
  184. data/spec/sinatra_modular/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  185. data/spec/sinatra_modular/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -15
  186. data/spec/sinatra_modular/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -13
  187. data/spec/sinatra_modular/filters.rb +0 -27
  188. data/spec/sinatra_modular/modular.rb +0 -157
  189. data/spec/sinatra_modular/myapp.rb +0 -133
  190. data/spec/sinatra_modular/sorcery_mailer.rb +0 -25
  191. data/spec/sinatra_modular/spec_modular/controller_activity_logging_spec.rb +0 -85
  192. data/spec/sinatra_modular/spec_modular/controller_brute_force_protection_spec.rb +0 -70
  193. data/spec/sinatra_modular/spec_modular/controller_http_basic_auth_spec.rb +0 -53
  194. data/spec/sinatra_modular/spec_modular/controller_oauth2_spec.rb +0 -96
  195. data/spec/sinatra_modular/spec_modular/controller_oauth_spec.rb +0 -100
  196. data/spec/sinatra_modular/spec_modular/controller_remember_me_spec.rb +0 -64
  197. data/spec/sinatra_modular/spec_modular/controller_session_timeout_spec.rb +0 -57
  198. data/spec/sinatra_modular/spec_modular/controller_spec.rb +0 -116
  199. data/spec/sinatra_modular/spec_modular/spec.opts +0 -2
  200. data/spec/sinatra_modular/spec_modular/spec_helper.rb +0 -51
  201. data/spec/sinatra_modular/user.rb +0 -6
  202. data/spec/sinatra_modular/views/test_login.erb +0 -4
  203. /data/spec/{sinatra → rails3_mongo_mapper/app/mailers}/sorcery_mailer.rb +0 -0
  204. /data/spec/{sinatra → rails3_mongo_mapper}/spec/spec.opts +0 -0
@@ -1,115 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Adapters
4
- # This module does the magic of translating Rails commands to Sinatra.
5
- # This way the Rails code doesn't change, but it actually now calls Sinatra calls.
6
- module Sinatra
7
- def self.included(base)
8
- base.class_eval do
9
- class << self
10
- # prepend a filter
11
- def prepend_filter(type, path = nil, options = {}, &block)
12
- return filters[type].unshift block unless path
13
- path, options = //, path if path.respond_to?(:each_pair)
14
- block, *arguments = compile!(type, path, block, options)
15
- prepend_filter(type) do
16
- process_route(*arguments) { instance_eval(&block) }
17
- end
18
- end
19
-
20
- def after_filter(filter)
21
- after do
22
- send(filter)
23
- end
24
- end
25
- end
26
- end
27
-
28
- ::Sinatra::Request.class_eval do
29
- def authorization
30
- env['HTTP_AUTHORIZATION'] ||
31
- env['X-HTTP_AUTHORIZATION'] ||
32
- env['X_HTTP_AUTHORIZATION'] ||
33
- env['REDIRECT_X_HTTP_AUTHORIZATION'] || nil
34
- end
35
- end
36
-
37
- base.send(:include, SorceryHelpers)
38
- base.send(:include, InstanceMethods)
39
- base.extend(ClassMethods)
40
- end
41
-
42
- module SorceryHelpers
43
-
44
- def request_http_basic_authentication(realm)
45
- response.header['WWW-Authenticate'] = %(Basic realm="#{realm}")
46
- response.status = 401
47
- end
48
-
49
- def authenticate_with_http_basic(&blk)
50
- @auth ||= Rack::Auth::Basic::Request.new(request.env)
51
- yield @auth.credentials if (@auth.provided? && @auth.basic? && @auth.credentials)
52
- end
53
-
54
- end
55
-
56
- module InstanceMethods
57
- def reset_session
58
- session.clear
59
- end
60
-
61
- def redirect_to(*args)
62
- args.pop if args.last.is_a?(Hash)
63
- redirect(*args)
64
- end
65
-
66
- def root_path
67
- '/'
68
- end
69
-
70
- ::Sinatra.helpers do
71
- include SorceryHelpers
72
- end
73
-
74
- def cookies
75
- @cookie_proxy ||= CookieProxy.new(request, response)
76
- end
77
- end
78
-
79
- class CookieProxy
80
- def initialize(request, response)
81
- @request = request
82
- @response = response
83
- @secure = false
84
- end
85
-
86
- def [](key)
87
- value = @request.cookies[key.to_s]
88
- end
89
-
90
- def []=(key, value)
91
- if @secure
92
- value.merge(:secret => Config.sinatra_cookie_secret)
93
- @secure = false
94
- end
95
- @response.set_cookie(key, value)
96
- end
97
-
98
- # mark cookie as signed, which will light a flag, which will cause the next set_cookie to be encrypted.
99
- def signed
100
- @secure = true
101
- self
102
- end
103
- end
104
-
105
- module ClassMethods
106
- def prepend_before_filter(filter)
107
- prepend_filter(:before) do
108
- send(filter)
109
- end
110
- end
111
- end
112
- end
113
- end
114
- end
115
- end
@@ -1,199 +0,0 @@
1
- # The first thing you need to configure is which modules you need in your app.
2
- # The default is nothing which will include only core features (password encryption, login/logout).
3
- # Available submodules are: :user_activation, :http_basic_auth, :remember_me,
4
- # :reset_password, :session_timeout, :brute_force_protection, :activity_logging, :external
5
- Rails.application.config.sorcery.submodules = []
6
-
7
- # Here you can configure each submodule's features.
8
- Rails.application.config.sorcery.configure do |config|
9
- # -- core --
10
- # config.not_authenticated_action = :not_authenticated # what controller action to call for
11
- # non-authenticated users.
12
- # You can also override 'not_authenticated'
13
- # instead.
14
-
15
- # config.save_return_to_url = true # when a non logged in user tries to enter
16
- # a page that requires login,
17
- # save the URL he wanted to reach,
18
- # and send him there after login, using
19
- # 'redirect_back_or_to'.
20
-
21
- # -- session timeout --
22
- # config.session_timeout = 3600 # how long in seconds to keep the session alive.
23
- # config.session_timeout_from_last_action = false # use the last action as the beginning of
24
- # session timeout.
25
-
26
- # -- http_basic_auth --
27
- # config.controller_to_realm_map = {"application" => "Application"} # What realm to display for which controller name.
28
- # For example {"My App" => "Application"}
29
-
30
- # -- activity logging --
31
- # config.register_login_time = true # will register the time of last user login, every login.
32
- # config.register_logout_time = true # will register the time of last user logout, every logout.
33
- # config.register_last_activity_time = true # will register the time of last user action, every action.
34
-
35
- # -- external --
36
- # config.external_providers = [] # What providers are supported by this app,
37
- # i.e. [:twitter, :facebook, :github] .
38
- # config.ca_file = 'path/to/ca_file' # Path to ca_file. By default use a internal ca-bundle.crt.
39
- # You can change it by your local ca_file.
40
- # i.e. '/etc/pki/tls/certs/ca-bundle.crt'
41
-
42
- # config.twitter.key = "eYVNBjBDi33aa9GkA3w"
43
- # config.twitter.secret = "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8"
44
- # config.twitter.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=twitter"
45
- # config.twitter.user_info_mapping = {:email => "screen_name"}
46
- #
47
- # config.facebook.key = "34cebc81c08a521bc66e212f947d73ec"
48
- # config.facebook.secret = "5b458d179f61d4f036ee66a497ffbcd0"
49
- # config.facebook.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=facebook"
50
- # config.facebook.user_info_mapping = {:email => "name"}
51
- #
52
- # config.github.key = ""
53
- # config.github.secret = ""
54
- # config.github.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=github"
55
- # config.github.user_info_mapping = {:email => "name"}
56
-
57
- # config.sinatra_cookie_secret = 'ch4ng3M3plz' # key used to sign cookies in Sinatra
58
- # changing it will invalidate all signed cookies!
59
-
60
- # --- user config ---
61
- config.user_config do |user|
62
- # -- core --
63
- # user.username_attribute_names = [:username] # specify username
64
- # attributes, for example:
65
- # [:username, :email].
66
-
67
- # user.password_attribute_name = :password # change *virtual* password
68
- # attribute, the one which is used
69
- # until an encrypted one is
70
- # generated.
71
-
72
- # user.email_attribute_name = :email # change default email attribute.
73
-
74
- # user.crypted_password_attribute_name = :crypted_password # change default crypted_password
75
- # attribute.
76
-
77
- # user.salt_join_token = "" # what pattern to use to join the
78
- # password with the salt
79
-
80
- # user.salt_attribute_name = :salt # change default salt attribute.
81
-
82
- # user.stretches = nil # how many times to apply
83
- # encryption to the password.
84
-
85
- # user.encryption_key = nil # encryption key used to encrypt
86
- # reversible encryptions such as
87
- # AES256.
88
- #
89
- # WARNING:
90
- #
91
- # If used for users' passwords, changing this key
92
- # will leave passwords undecryptable!
93
-
94
- # user.custom_encryption_provider = nil # use an external encryption
95
- # class.
96
-
97
- # user.encryption_algorithm = :bcrypt # encryption algorithm name. See
98
- # 'encryption_algorithm=' for
99
- # available options.
100
-
101
- # user.subclasses_inherit_config = false # make this configuration
102
- # inheritable for subclasses.
103
- # Useful for ActiveRecord's STI.
104
-
105
- # -- user_activation --
106
- # user.activation_state_attribute_name = :activation_state # the attribute name to hold
107
- # activation state
108
- # (active/pending).
109
-
110
- # user.activation_token_attribute_name = :activation_token # the attribute name to hold
111
- # activation code (sent by email).
112
-
113
- # user.activation_token_expires_at_attribute_name = :activation_token_expires_at # the attribute name to hold
114
- # activation code expiration date.
115
-
116
- # user.activation_token_expiration_period = nil # how many seconds before the
117
- # activation code expires. nil for
118
- # never expires.
119
-
120
- # user.user_activation_mailer = nil # your mailer class. Required.
121
-
122
- # user.activation_needed_email_method_name = :activation_needed_email # activation needed email method
123
- # on your mailer class.
124
-
125
- # user.activation_success_email_method_name = :activation_success_email # activation success email method
126
- # on your mailer class.
127
-
128
- # user.prevent_non_active_users_to_login = true # do you want to prevent or allow
129
- # users that did not activate by
130
- # email to login?
131
-
132
- # -- reset_password --
133
- # user.reset_password_token_attribute_name = :reset_password_token # reset password code
134
- # attribute name.
135
-
136
- # user.reset_password_token_expires_at_attribute_name = :reset_password_token_expires_at # expires at attribute
137
- # name.
138
-
139
- # user.reset_password_email_sent_at_attribute_name = :reset_password_email_sent_at # when was email sent,
140
- # used for hammering
141
- # protection.
142
-
143
- # user.reset_password_mailer = nil # mailer class. Needed.
144
-
145
- # user.reset_password_email_method_name = :reset_password_email # reset password email
146
- # method on your mailer
147
- # class.
148
-
149
- # user.reset_password_expiration_period = nil # how many seconds
150
- # before the reset
151
- # request expires. nil
152
- # for never expires.
153
-
154
- # user.reset_password_time_between_emails = 5 * 60 # hammering protection,
155
- # how long to wait
156
- # before allowing
157
- # another email to be
158
- # sent.
159
-
160
- # -- brute_force_protection --
161
- # user.failed_logins_count_attribute_name = :failed_logins_count # failed logins attribute name.
162
-
163
- # user.lock_expires_at_attribute_name = :lock_expires_at # this field indicates whether
164
- # user is banned and when it will
165
- # be active again.
166
-
167
- # user.consecutive_login_retries_amount_limit = 50 # how many failed logins allowed.
168
-
169
- # user.login_lock_time_period = 60 * 60 # how long the user should be
170
- # banned. in seconds. 0 for
171
- # permanent.
172
-
173
- # -- activity logging --
174
- # user.last_login_at_attribute_name = :last_login_at # last login attribute name.
175
- # user.last_logout_at_attribute_name = :last_logout_at # last logout attribute name.
176
- # user.last_activity_at_attribute_name = :last_activity_at # last activity attribute name.
177
- # user.activity_timeout = 10 * 60 # how long since last activity is
178
- # the user defined logged out?
179
-
180
- # -- external --
181
- # user.authentications_class = nil # class which holds the various
182
- # external provider data for this
183
- # user.
184
-
185
- # user.authentications_user_id_attribute_name = :user_id # user's identifier in
186
- # authentications class.
187
-
188
- # user.provider_attribute_name = :provider # provider's identifier in
189
- # authentications class.
190
-
191
- # user.provider_uid_attribute_name = :uid # user's external unique
192
- # identifier in authentications
193
- # class.
194
- end
195
-
196
- # This line must come after the 'user config' block.
197
- config.user_class = "User" # define which model authenticates
198
- # with sorcery.
199
- end
@@ -1,4 +0,0 @@
1
- if defined?(Sinatra::Base)
2
- Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
3
- Sinatra::Base.send(:include, Sorcery::Controller)
4
- end
@@ -1,74 +0,0 @@
1
- module Sorcery
2
- module TestHelpers
3
- module Internal
4
- module Sinatra
5
- include ::Sorcery::TestHelpers::Sinatra::CookieSessionMethods
6
- include ::Sorcery::TestHelpers::Sinatra::InstanceMethods
7
-
8
- class ::Sinatra::Application
9
- class << self
10
- attr_accessor :sorcery_vars
11
- end
12
- @sorcery_vars = {}
13
-
14
- # NOTE: see before and after test filters in filters.rb
15
-
16
- def save_instance_vars
17
- instance_variables.each do |var|
18
- self.class.sorcery_vars[:"#{var.to_s.delete("@")}"] = instance_variable_get(var)
19
- end
20
- end
21
- end
22
-
23
- ::RSpec::Matchers.define :redirect_to do |expected|
24
- match do |actual|
25
- actual.status == 302 && actual.location == expected
26
- end
27
- end
28
-
29
- def clear_user_without_logout
30
- get_sinatra_app(subject).instance_variable_set(:@current_user, nil)
31
- end
32
-
33
- def assigns
34
- ::Sinatra::Application.sorcery_vars
35
- end
36
-
37
- def sorcery_reload!(submodules = [], options = {})
38
- reload_user_class
39
-
40
- # return to no-module configuration
41
- ::Sorcery::Controller::Config.init!
42
- ::Sorcery::Controller::Config.reset!
43
-
44
- # clear all filters
45
- ::Sinatra::Application.instance_variable_set(:@filters, {:before => [], :after => []})
46
- load File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'spec', 'sinatra', 'filters.rb')
47
- ::Sinatra::Application.send(:include, ::Filters)
48
-
49
- # configure
50
- ::Sorcery::Controller::Config.submodules = submodules
51
- ::Sorcery::Controller::Config.user_class = nil
52
- ::Sinatra::Application.send(:include, Sorcery::Controller::Adapters::Sinatra)
53
- ::Sinatra::Application.send(:include, Sorcery::Controller)
54
- ::Sorcery::Controller::Config.user_class = "User"
55
-
56
- ::Sorcery::Controller::Config.user_config do |user|
57
- options.each do |property, value|
58
- user.send(:"#{property}=", value)
59
- end
60
- end
61
- User.authenticates_with_sorcery!
62
- end
63
-
64
- def sorcery_controller_property_set(property, value)
65
- ::Sorcery::Controller::Config.send(:"#{property}=", value)
66
- end
67
-
68
- def sorcery_controller_external_property_set(provider, property, value)
69
- ::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,74 +0,0 @@
1
- module Sorcery
2
- module TestHelpers
3
- module Internal
4
- module SinatraModular
5
- include ::Sorcery::TestHelpers::Sinatra::CookieSessionMethods
6
- include ::Sorcery::TestHelpers::Sinatra::InstanceMethods
7
-
8
- class ::Modular
9
- class << self
10
- attr_accessor :sorcery_vars
11
- end
12
- @sorcery_vars = {}
13
-
14
- # NOTE: see before and after test filters in filters.rb
15
-
16
- def save_instance_vars
17
- instance_variables.each do |var|
18
- self.class.sorcery_vars[:"#{var.to_s.delete("@")}"] = instance_variable_get(var)
19
- end
20
- end
21
- end
22
-
23
- ::RSpec::Matchers.define :redirect_to do |expected|
24
- match do |actual|
25
- actual.status == 302 && actual.location == expected
26
- end
27
- end
28
-
29
- def clear_user_without_logout
30
- get_sinatra_app(subject).instance_variable_set(:@current_user, nil)
31
- end
32
-
33
- def assigns
34
- ::Modular.sorcery_vars
35
- end
36
-
37
- def sorcery_reload!(submodules = [], options = {})
38
- reload_user_class
39
-
40
- # return to no-module configuration
41
- ::Sorcery::Controller::Config.init!
42
- ::Sorcery::Controller::Config.reset!
43
-
44
- # clear all filters
45
- ::Sinatra::Base.instance_variable_set(:@filters, {:before => [], :after => []})
46
- require File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'spec', 'sinatra', 'filters')
47
- ::Sinatra::Base.send(:include, ::Filters)
48
-
49
- # configure
50
- ::Sorcery::Controller::Config.submodules = submodules
51
- ::Sorcery::Controller::Config.user_class = nil
52
- ::Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
53
- ::Sinatra::Base.send(:include, Sorcery::Controller)
54
- ::Sorcery::Controller::Config.user_class = "User"
55
-
56
- ::Sorcery::Controller::Config.user_config do |user|
57
- options.each do |property, value|
58
- user.send(:"#{property}=", value)
59
- end
60
- end
61
- User.authenticates_with_sorcery!
62
- end
63
-
64
- def sorcery_controller_property_set(property, value)
65
- ::Sorcery::Controller::Config.send(:"#{property}=", value)
66
- end
67
-
68
- def sorcery_controller_external_property_set(provider, property, value)
69
- ::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,88 +0,0 @@
1
- module Sorcery
2
- module TestHelpers
3
- module Sinatra
4
- def self.included(base)
5
- base.send(:include, InstanceMethods)
6
- base.send(:include, CookieSessionMethods)
7
- ::Sinatra::Base.class_eval do
8
- class << self
9
- attr_accessor :rack_test_session
10
- end
11
-
12
- def self.inherited(subclass)
13
- super
14
- subclass.class_eval do
15
- class << self
16
- attr_accessor :rack_test_session
17
- end
18
- end
19
- end
20
-
21
- include CookieSessionMethods
22
-
23
- def rack_test_session
24
- self.class.rack_test_session
25
- end
26
- end
27
- end
28
-
29
- module InstanceMethods
30
- def get_sinatra_app(app)
31
- while !app.kind_of? ::Sinatra::Base do
32
- app = app.instance_variable_get(:@app)
33
- end
34
- app
35
- end
36
-
37
- def login_user(user=nil)
38
- user ||= @user
39
- get_sinatra_app(app).send(:login_user, user)
40
- get_sinatra_app(app).send(:after_login!, user, [user.send(user.sorcery_config.username_attribute_names.first), 'secret'])
41
- end
42
-
43
- def logout_user
44
- get_sinatra_app(app).send(:logout)
45
- end
46
- end
47
-
48
- module CookieSessionMethods
49
- class SessionData
50
- def initialize(cookies)
51
- @cookies = cookies
52
- @data = cookies['rack.session']
53
- if @data
54
- @data = @data.unpack("m*").first
55
- @data = Marshal.load(@data)
56
- else
57
- @data = {}
58
- end
59
- end
60
-
61
- def [](key)
62
- @data[key]
63
- end
64
-
65
- def []=(key, value)
66
- @data[key] = value
67
- session_data = Marshal.dump(@data)
68
- session_data = [session_data].pack("m*")
69
- @cookies.merge("rack.session=#{Rack::Utils.escape(session_data)}", URI.parse("//example.org//"))
70
- raise "session variable not set" unless @cookies['rack.session'] == session_data
71
- end
72
-
73
- def clear
74
- @data = {}
75
- end
76
- end
77
-
78
- def session
79
- SessionData.new(cookies)
80
- end
81
-
82
- def cookies
83
- rack_test_session.instance_variable_get(:@rack_mock_session).cookie_jar
84
- end
85
- end
86
- end
87
- end
88
- end
@@ -1,7 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require File.expand_path('../config/application', __FILE__)
5
- require 'rake'
6
-
7
- AppRoot::Application.load_tasks
data/spec/sinatra/Gemfile DELETED
@@ -1,15 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'sinatra', '>= 1.2.0'
4
- gem 'sqlite3-ruby', :require => 'sqlite3'
5
- gem 'activerecord', '>= 3.0.3'
6
- gem 'actionmailer', '>= 3.0.3'
7
- gem "sorcery", '>= 0.1.0', :path => '../../'
8
-
9
- group :development, :test do
10
- gem "rake"
11
- gem "rspec", "~> 2.5.0"
12
- gem 'ruby-debug19'
13
- gem 'simplecov', '>= 0.3.8', :require => false # Will install simplecov-html as a dependency
14
- gem 'timecop'
15
- end