sorcery 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sorcery might be problematic. Click here for more details.
- data/Gemfile +3 -2
- data/Gemfile.lock +13 -11
- data/README.rdoc +89 -61
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/lib/generators/sorcery_migration/templates/core.rb +2 -2
- data/lib/sorcery.rb +1 -0
- data/lib/sorcery/controller.rb +16 -18
- data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -1
- data/lib/sorcery/crypto_providers/bcrypt.rb +1 -1
- data/lib/sorcery/crypto_providers/common.rb +35 -0
- data/lib/sorcery/crypto_providers/md5.rb +3 -23
- data/lib/sorcery/crypto_providers/sha1.rb +4 -16
- data/lib/sorcery/crypto_providers/sha256.rb +3 -23
- data/lib/sorcery/crypto_providers/sha512.rb +3 -23
- data/lib/sorcery/engine.rb +4 -0
- data/lib/sorcery/initializers/initializer.rb +86 -0
- data/lib/sorcery/model.rb +4 -2
- data/lib/sorcery/railties/tasks.rake +10 -0
- data/lib/sorcery/sinatra.rb +0 -9
- data/lib/sorcery/test_helpers.rb +12 -0
- data/lib/sorcery/test_helpers/rails.rb +6 -9
- data/lib/sorcery/test_helpers/sinatra.rb +6 -9
- data/sorcery.gemspec +137 -146
- data/spec/Gemfile +2 -2
- data/spec/Gemfile.lock +10 -10
- data/spec/Rakefile +1 -0
- data/spec/rails3/{app_root/.gitignore → .gitignore} +0 -0
- data/spec/rails3/.rspec +1 -1
- data/spec/rails3/{app_root/Gemfile → Gemfile} +4 -4
- data/spec/rails3/{app_root/Gemfile.lock → Gemfile.lock} +20 -20
- data/spec/rails3/{app_root/README → README} +0 -0
- data/spec/rails3/{app_root/Rakefile → Rakefile} +1 -0
- data/spec/rails3/{app_root/Rakefile.unused → Rakefile.unused} +0 -0
- data/spec/rails3/{app_root/app → app}/controllers/application_controller.rb +0 -0
- data/spec/rails3/{app_root/app → app}/helpers/application_helper.rb +0 -0
- data/spec/rails3/{app_root/app → app}/mailers/sorcery_mailer.rb +0 -0
- data/spec/rails3/{app_root/app → app}/models/authentication.rb +0 -0
- data/spec/rails3/{app_root/app → app}/models/user.rb +0 -0
- data/spec/rails3/{app_root/app → app}/views/layouts/application.html.erb +0 -0
- data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_email.html.erb +0 -0
- data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_email.text.erb +0 -0
- data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_success_email.html.erb +0 -0
- data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_success_email.text.erb +0 -0
- data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/reset_password_email.html.erb +0 -0
- data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/reset_password_email.text.erb +0 -0
- data/spec/rails3/{app_root/config.ru → config.ru} +0 -0
- data/spec/rails3/{app_root/config → config}/application.rb +0 -0
- data/spec/rails3/{app_root/config → config}/boot.rb +0 -0
- data/spec/rails3/config/database.yml +27 -0
- data/spec/rails3/{app_root/config → config}/environment.rb +0 -0
- data/spec/rails3/{app_root/config → config}/environments/development.rb +0 -0
- data/spec/rails3/{app_root/config → config}/environments/in_memory.rb +0 -0
- data/spec/rails3/{app_root/config → config}/environments/production.rb +0 -0
- data/spec/rails3/{app_root/config → config}/environments/test.rb +0 -0
- data/spec/rails3/{app_root/config → config}/initializers/backtrace_silencers.rb +0 -0
- data/spec/rails3/{app_root/config → config}/initializers/inflections.rb +0 -0
- data/spec/rails3/{app_root/config → config}/initializers/mime_types.rb +0 -0
- data/spec/rails3/{app_root/config → config}/initializers/secret_token.rb +0 -0
- data/spec/rails3/{app_root/config → config}/initializers/session_store.rb +0 -0
- data/spec/rails3/{app_root/config → config}/locales/en.yml +0 -0
- data/spec/rails3/{app_root/config → config}/routes.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/activation/20101224223622_add_activation_to_users.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/core/20101224223620_create_users.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/external/20101224223628_create_authentications.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
- data/spec/rails3/{app_root/db → db}/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
- data/spec/rails3/{app_root/db → db}/schema.rb +0 -0
- data/spec/rails3/{app_root/db → db}/seeds.rb +0 -0
- data/spec/rails3/{app_root/lib → lib}/tasks/.gitkeep +0 -0
- data/spec/rails3/{app_root/public → public}/404.html +0 -0
- data/spec/rails3/{app_root/public → public}/422.html +0 -0
- data/spec/rails3/{app_root/public → public}/500.html +0 -0
- data/spec/rails3/{app_root/public → public}/favicon.ico +0 -0
- data/spec/rails3/{app_root/public → public}/images/rails.png +0 -0
- data/spec/rails3/{app_root/public → public}/index.html +0 -0
- data/spec/rails3/{app_root/public → public}/javascripts/application.js +0 -0
- data/spec/rails3/{app_root/public → public}/javascripts/controls.js +0 -0
- data/spec/rails3/{app_root/public → public}/javascripts/dragdrop.js +0 -0
- data/spec/rails3/{app_root/public → public}/javascripts/effects.js +0 -0
- data/spec/rails3/{app_root/public → public}/javascripts/prototype.js +0 -0
- data/spec/rails3/{app_root/public → public}/javascripts/rails.js +0 -0
- data/spec/rails3/{app_root/public → public}/robots.txt +0 -0
- data/spec/rails3/{app_root/public → public}/stylesheets/.gitkeep +0 -0
- data/spec/rails3/{app_root/script → script}/rails +0 -0
- data/spec/rails3/{app_root/spec → spec}/controller_activity_logging_spec.rb +0 -0
- data/spec/rails3/{app_root/spec → spec}/controller_brute_force_protection_spec.rb +3 -2
- data/spec/rails3/{app_root/spec → spec}/controller_http_basic_auth_spec.rb +0 -0
- data/spec/rails3/{app_root/spec → spec}/controller_oauth2_spec.rb +10 -9
- data/spec/rails3/{app_root/spec → spec}/controller_oauth_spec.rb +5 -5
- data/spec/rails3/{app_root/spec → spec}/controller_remember_me_spec.rb +0 -0
- data/spec/rails3/{app_root/spec → spec}/controller_session_timeout_spec.rb +8 -4
- data/spec/rails3/{app_root/spec → spec}/controller_spec.rb +0 -0
- data/spec/rails3/spec/spec.opts +2 -0
- data/spec/rails3/{app_root/spec → spec}/spec_helper.orig.rb +0 -0
- data/spec/rails3/spec/spec_helper.rb +70 -0
- data/spec/rails3/{app_root/spec → spec}/user_activation_spec.rb +5 -1
- data/spec/rails3/{app_root/spec → spec}/user_activity_logging_spec.rb +0 -0
- data/spec/rails3/{app_root/spec → spec}/user_brute_force_protection_spec.rb +0 -0
- data/spec/rails3/{app_root/spec → spec}/user_oauth_spec.rb +3 -3
- data/spec/rails3/{app_root/spec → spec}/user_remember_me_spec.rb +0 -0
- data/spec/rails3/{app_root/spec → spec}/user_reset_password_spec.rb +7 -3
- data/spec/rails3/{app_root/spec → spec}/user_spec.rb +3 -9
- data/spec/rails3/{app_root/vendor → vendor}/plugins/.gitkeep +0 -0
- data/spec/sinatra/Gemfile +3 -3
- data/spec/sinatra/Gemfile.lock +17 -17
- data/spec/sinatra/Rakefile +1 -0
- data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +3 -2
- data/spec/sinatra/spec/controller_oauth2_spec.rb +10 -9
- data/spec/sinatra/spec/controller_oauth_spec.rb +5 -5
- data/spec/sinatra/spec/controller_session_timeout_spec.rb +8 -4
- data/spec/sinatra/spec/spec.opts +2 -4
- data/spec/sinatra/spec/spec_helper.rb +2 -1
- data/spec/sorcery_crypto_providers_spec.rb +5 -4
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +3 -4
- metadata +148 -149
- data/lib/sorcery/controller/submodules/email.rb +0 -44
- data/lib/sorcery/controller/submodules/oauth.rb +0 -95
- data/spec/rails3/app_root/.rspec +0 -1
- data/spec/rails3/app_root/config/database.yml +0 -27
- data/spec/rails3/app_root/spec/spec_helper.rb +0 -62
- data/spec/sinatra/spec/user_activation_spec.rb +0 -188
- data/spec/sinatra/spec/user_activity_logging_spec.rb +0 -36
- data/spec/sinatra/spec/user_brute_force_protection_spec.rb +0 -76
- data/spec/sinatra/spec/user_oauth_spec.rb +0 -39
- data/spec/sinatra/spec/user_remember_me_spec.rb +0 -66
- data/spec/sinatra/spec/user_reset_password_spec.rb +0 -178
- data/spec/sinatra/spec/user_spec.rb +0 -317
@@ -8,30 +8,10 @@ module Sorcery
|
|
8
8
|
#
|
9
9
|
# Please use any other provider offered by Sorcery.
|
10
10
|
class MD5
|
11
|
+
include Common
|
11
12
|
class << self
|
12
|
-
|
13
|
-
|
14
|
-
# The number of times to loop through the encryption.
|
15
|
-
def stretches
|
16
|
-
@stretches ||= 1
|
17
|
-
end
|
18
|
-
attr_writer :stretches
|
19
|
-
|
20
|
-
# Turns your raw password into a MD5 hash.
|
21
|
-
def encrypt(*tokens)
|
22
|
-
digest = tokens.flatten.join(join_token)
|
23
|
-
stretches.times { digest = Digest::MD5.hexdigest(digest) }
|
24
|
-
digest
|
25
|
-
end
|
26
|
-
|
27
|
-
# Does the crypted password match the tokens? Uses the same tokens that were used to encrypt.
|
28
|
-
def matches?(crypted, *tokens)
|
29
|
-
encrypt(*tokens) == crypted
|
30
|
-
end
|
31
|
-
|
32
|
-
def reset!
|
33
|
-
@stretches = 1
|
34
|
-
@join_token = nil
|
13
|
+
def secure_digest(digest)
|
14
|
+
Digest::MD5.hexdigest(digest)
|
35
15
|
end
|
36
16
|
end
|
37
17
|
end
|
@@ -5,34 +5,22 @@ module Sorcery
|
|
5
5
|
# This class was made for the users transitioning from restful_authentication. I highly discourage using this
|
6
6
|
# crypto provider as it inferior to your other options. Please use any other provider offered by Sorcery.
|
7
7
|
class SHA1
|
8
|
+
include Common
|
8
9
|
class << self
|
9
10
|
def join_token
|
10
11
|
@join_token ||= "--"
|
11
12
|
end
|
12
|
-
attr_writer :join_token
|
13
|
-
|
14
|
-
# The number of times to loop through the encryption. This is ten because that is what restful_authentication defaults to.
|
15
|
-
def stretches
|
16
|
-
@stretches ||= 10
|
17
|
-
end
|
18
|
-
attr_writer :stretches
|
19
13
|
|
20
14
|
# Turns your raw password into a Sha1 hash.
|
21
15
|
def encrypt(*tokens)
|
22
16
|
tokens = tokens.flatten
|
23
17
|
digest = tokens.shift
|
24
|
-
stretches.times { digest =
|
18
|
+
stretches.times { digest = secure_digest([digest, *tokens].join(join_token)) }
|
25
19
|
digest
|
26
20
|
end
|
27
21
|
|
28
|
-
|
29
|
-
|
30
|
-
encrypt(*tokens) == crypted
|
31
|
-
end
|
32
|
-
|
33
|
-
def reset!
|
34
|
-
@stretches = 10
|
35
|
-
@join_token = nil
|
22
|
+
def secure_digest(digest)
|
23
|
+
Digest::SHA1.hexdigest(digest)
|
36
24
|
end
|
37
25
|
end
|
38
26
|
end
|
@@ -24,30 +24,10 @@ module Sorcery
|
|
24
24
|
#
|
25
25
|
# Uses the Sha256 hash algorithm to encrypt passwords.
|
26
26
|
class SHA256
|
27
|
+
include Common
|
27
28
|
class << self
|
28
|
-
|
29
|
-
|
30
|
-
# The number of times to loop through the encryption.
|
31
|
-
def stretches
|
32
|
-
@stretches ||= 20
|
33
|
-
end
|
34
|
-
attr_writer :stretches
|
35
|
-
|
36
|
-
# Turns your raw password into a Sha256 hash.
|
37
|
-
def encrypt(*tokens)
|
38
|
-
digest = tokens.flatten.join(join_token)
|
39
|
-
stretches.times { digest = Digest::SHA256.hexdigest(digest) }
|
40
|
-
digest
|
41
|
-
end
|
42
|
-
|
43
|
-
# Does the crypted password match the tokens? Uses the same tokens that were used to encrypt.
|
44
|
-
def matches?(crypted, *tokens)
|
45
|
-
encrypt(*tokens) == crypted
|
46
|
-
end
|
47
|
-
|
48
|
-
def reset!
|
49
|
-
@stretches = 20
|
50
|
-
@join_token = nil
|
29
|
+
def secure_digest(digest)
|
30
|
+
Digest::SHA256.hexdigest(digest)
|
51
31
|
end
|
52
32
|
end
|
53
33
|
end
|
@@ -24,30 +24,10 @@ module Sorcery
|
|
24
24
|
#
|
25
25
|
# Uses the Sha512 hash algorithm to encrypt passwords.
|
26
26
|
class SHA512
|
27
|
+
include Common
|
27
28
|
class << self
|
28
|
-
|
29
|
-
|
30
|
-
# The number of times to loop through the encryption.
|
31
|
-
def stretches
|
32
|
-
@stretches ||= 20
|
33
|
-
end
|
34
|
-
attr_writer :stretches
|
35
|
-
|
36
|
-
# Turns your raw password into a Sha512 hash.
|
37
|
-
def encrypt(*tokens)
|
38
|
-
digest = tokens.flatten.join(join_token)
|
39
|
-
stretches.times { digest = Digest::SHA512.hexdigest(digest) }
|
40
|
-
digest
|
41
|
-
end
|
42
|
-
|
43
|
-
# Does the crypted password match the tokens? Uses the same tokens that were used to encrypt.
|
44
|
-
def matches?(crypted, *tokens)
|
45
|
-
encrypt(*tokens) == crypted
|
46
|
-
end
|
47
|
-
|
48
|
-
def reset!
|
49
|
-
@stretches = 20
|
50
|
-
@join_token = nil
|
29
|
+
def secure_digest(digest)
|
30
|
+
Digest::SHA512.hexdigest(digest)
|
51
31
|
end
|
52
32
|
end
|
53
33
|
end
|
data/lib/sorcery/engine.rb
CHANGED
@@ -0,0 +1,86 @@
|
|
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, :reset_password, :session_timeout, :brute_force_protection, :activity_logging, :external
|
4
|
+
Collaboration::Application.config.sorcery.submodules = []
|
5
|
+
|
6
|
+
# Here you can configure each submodule's features.
|
7
|
+
Collaboration::Application.config.sorcery.configure do |config|
|
8
|
+
# -- core --
|
9
|
+
# config.not_authenticated_action = :not_authenticated # what controller action to call for non-authenticated users. You can also override 'not_authenticated' instead.
|
10
|
+
# config.save_return_to_url = true # when a non logged in user tries to enter a page that requires login, save the URL he wanted to reach,
|
11
|
+
# and send him there after login, using 'redirect_back_or_to'.
|
12
|
+
|
13
|
+
# -- session timeout --
|
14
|
+
# config.session_timeout = 3600 # how long in seconds to keep the session alive.
|
15
|
+
# config.session_timeout_from_last_action = false # use the last action as the beginning of session timeout.
|
16
|
+
|
17
|
+
# -- http_basic_auth --
|
18
|
+
# config.controller_to_realm_map = {"application" => "Application"} # What realm to display for which controller name.
|
19
|
+
# For example {"My App" => "Application"}
|
20
|
+
|
21
|
+
# -- external --
|
22
|
+
# config.external_providers = [] # What providers are supported by this app, i.e. [:twitter, :facebook] .
|
23
|
+
#
|
24
|
+
# config.twitter.key = "eYVNBjBDi33aa9GkA3w"
|
25
|
+
# config.twitter.secret = "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8"
|
26
|
+
# config.twitter.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=twitter"
|
27
|
+
# config.twitter.user_info_mapping = {:email => "screen_name"}
|
28
|
+
#
|
29
|
+
# config.facebook.key = "34cebc81c08a521bc66e212f947d73ec"
|
30
|
+
# config.facebook.secret = "5b458d179f61d4f036ee66a497ffbcd0"
|
31
|
+
# config.facebook.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=facebook"
|
32
|
+
# config.facebook.user_info_mapping = {:email => "name"}
|
33
|
+
|
34
|
+
# --- user config ---
|
35
|
+
config.user_config do |user|
|
36
|
+
# -- core --
|
37
|
+
# user.username_attribute_name = # change default username attribute, for example, to use :email as the login.
|
38
|
+
# user.password_attribute_name = # change *virtual* password attribute, the one which is used until an encrypted one is generated.
|
39
|
+
# user.email_attribute_name = # change default email attribute.
|
40
|
+
# user.crypted_password_attribute_name = # change default crypted_password attribute.
|
41
|
+
# user.salt_join_token = # what pattern to use to join the password with the salt
|
42
|
+
# user.salt_attribute_name = # change default salt attribute.
|
43
|
+
# user.stretches = # how many times to apply encryption to the password.
|
44
|
+
# user.encryption_key = # encryption key used to encrypt reversible encryptions such as AES256.
|
45
|
+
# user.encryption_provider = # change default encryption_provider.
|
46
|
+
# user.custom_encryption_provider = # use an external encryption class.
|
47
|
+
# user.encryption_algorithm = # encryption algorithm name. See 'encryption_algorithm=' for available options.
|
48
|
+
|
49
|
+
# -- user_activation --
|
50
|
+
# user.activation_state_attribute_name = # the attribute name to hold activation state (active/pending).
|
51
|
+
# user.activation_token_attribute_name = # the attribute name to hold activation code (sent by email).
|
52
|
+
# user.activation_token_expires_at_attribute_name = # the attribute name to hold activation code expiration date.
|
53
|
+
# user.activation_token_expiration_period = # how many seconds before the activation code expires. nil for never expires.
|
54
|
+
# user.user_activation_mailer = # your mailer class. Required.
|
55
|
+
# user.activation_needed_email_method_name = # activation needed email method on your mailer class.
|
56
|
+
# user.activation_success_email_method_name = # activation success email method on your mailer class.
|
57
|
+
# user.prevent_non_active_users_to_login = # do you want to prevent or allow users that did not activate by email to login?
|
58
|
+
|
59
|
+
# -- reset_password --
|
60
|
+
# user.reset_password_token_attribute_name = # reset password code attribute name.
|
61
|
+
# user.reset_password_token_expires_at_attribute_name = # expires at attribute name.
|
62
|
+
# user.reset_password_email_sent_at_attribute_name = # when was email sent, used for hammering protection.
|
63
|
+
# user.reset_password_mailer = # mailer class. Needed.
|
64
|
+
# user.reset_password_email_method_name = # reset password email method on your mailer class.
|
65
|
+
# user.reset_password_expiration_period = # how many seconds before the reset request expires. nil for never expires.
|
66
|
+
# user.reset_password_time_between_emails = # hammering protection, how long to wait before allowing another email to be sent.
|
67
|
+
|
68
|
+
# -- brute_force_protection --
|
69
|
+
# user.failed_logins_count_attribute_name = # failed logins attribute name.
|
70
|
+
# user.lock_expires_at_attribute_name = # this field indicates whether user is banned and when it will be active again.
|
71
|
+
# user.consecutive_login_retries_amount_limit = # how many failed logins allowed.
|
72
|
+
# user.login_lock_time_period = # how long the user should be banned. in seconds. 0 for permanent.
|
73
|
+
|
74
|
+
# -- activity logging --
|
75
|
+
# user.last_login_at_attribute_name = # last login attribute name.
|
76
|
+
# user.last_logout_at_attribute_name = # last logout attribute name.
|
77
|
+
# user.last_activity_at_attribute_name = # last activity attribute name.
|
78
|
+
# user.activity_timeout = # how long since last activity is the user defined logged out?
|
79
|
+
|
80
|
+
# -- external --
|
81
|
+
# user.authentications_class = # class which holds the various external provider data for this user.
|
82
|
+
# user.authentications_user_id_attribute_name = # user's identifier in authentications class.
|
83
|
+
# user.provider_attribute_name = # provider's identifier in authentications class.
|
84
|
+
# user.provider_uid_attribute_name = # user's external unique identifier in authentications class.
|
85
|
+
end
|
86
|
+
end
|
data/lib/sorcery/model.rb
CHANGED
@@ -9,11 +9,13 @@ module Sorcery
|
|
9
9
|
def self.included(klass)
|
10
10
|
klass.class_eval do
|
11
11
|
class << self
|
12
|
-
def
|
12
|
+
def authenticates_with_sorcery!
|
13
13
|
@sorcery_config = Config.new
|
14
14
|
self.class_eval do
|
15
15
|
extend ClassMethods # included here, before submodules, so they can be overriden by them.
|
16
16
|
include InstanceMethods
|
17
|
+
|
18
|
+
# set the user_class for the controller methods which call it
|
17
19
|
::Sorcery::Controller::Config.user_class = self
|
18
20
|
@sorcery_config.submodules = ::Sorcery::Controller::Config.submodules
|
19
21
|
@sorcery_config.submodules.each do |mod|
|
@@ -25,7 +27,7 @@ module Sorcery
|
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
|
-
|
30
|
+
::Sorcery::Controller::Config.user_config.tap{|blk| blk.call(@sorcery_config) if blk}
|
29
31
|
|
30
32
|
self.class_eval do
|
31
33
|
attr_accessor @sorcery_config.password_attribute_name
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
namespace :sorcery do
|
4
|
+
desc "Adds sorcery's initializer file"
|
5
|
+
task :bootstrap do
|
6
|
+
src = File.join(File.dirname(__FILE__), '..', 'initializers', 'initializer.rb')
|
7
|
+
target = File.join(Rails.root, "config", "initializers", "sorcery.rb")
|
8
|
+
FileUtils.cp(src, target)
|
9
|
+
end
|
10
|
+
end
|
data/lib/sorcery/sinatra.rb
CHANGED
@@ -2,13 +2,4 @@ ActiveRecord::Base.send(:include, Sorcery::Model) if defined?(ActiveRecord)
|
|
2
2
|
if defined?(Sinatra::Base)
|
3
3
|
Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
|
4
4
|
Sinatra::Base.send(:include, Sorcery::Controller)
|
5
|
-
# Sorcery::Controller::Config.class_eval do
|
6
|
-
# class << self
|
7
|
-
# def submodules=(mods)
|
8
|
-
# @submodules = mods
|
9
|
-
# Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
|
10
|
-
# Sinatra::Base.send(:include, Sorcery::Controller)
|
11
|
-
# end
|
12
|
-
# end
|
13
|
-
# end
|
14
5
|
end
|
data/lib/sorcery/test_helpers.rb
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
module Sorcery
|
2
|
+
# This file will be included in the spec_helper file.
|
2
3
|
module TestHelpers
|
4
|
+
def self.included(base)
|
5
|
+
# reducing default cost for specs speed
|
6
|
+
CryptoProviders::BCrypt.class_eval do
|
7
|
+
class << self
|
8
|
+
def cost
|
9
|
+
1
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
3
15
|
# a patch to fix a bug in testing that happens when you 'destroy' a session twice.
|
4
16
|
# After the first destroy, the session is an ordinary hash, and then when destroy is called again there's an exception.
|
5
17
|
class ::Hash
|
@@ -20,23 +20,20 @@ module Sorcery
|
|
20
20
|
::Sorcery::Controller::Config.user_class = nil
|
21
21
|
ActionController::Base.send(:include,::Sorcery::Controller)
|
22
22
|
|
23
|
-
|
23
|
+
::Sorcery::Controller::Config.user_config do |user|
|
24
24
|
options.each do |property,value|
|
25
|
-
|
25
|
+
user.send(:"#{property}=", value)
|
26
26
|
end
|
27
27
|
end
|
28
|
+
User.authenticates_with_sorcery!
|
28
29
|
end
|
29
30
|
|
30
31
|
def sorcery_controller_property_set(property, value)
|
31
|
-
|
32
|
-
config.send(:"#{property}=", value)
|
33
|
-
end
|
32
|
+
::Sorcery::Controller::Config.send(:"#{property}=", value)
|
34
33
|
end
|
35
34
|
|
36
|
-
def
|
37
|
-
|
38
|
-
config.send(provider).send(:"#{property}=", value)
|
39
|
-
end
|
35
|
+
def sorcery_controller_external_property_set(provider, property, value)
|
36
|
+
::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
|
40
37
|
end
|
41
38
|
|
42
39
|
def login_user(user = nil)
|
@@ -108,23 +108,20 @@ module Sorcery
|
|
108
108
|
::Sinatra::Application.send(:include, Sorcery::Controller::Adapters::Sinatra)
|
109
109
|
::Sinatra::Application.send(:include, Sorcery::Controller)
|
110
110
|
|
111
|
-
|
111
|
+
::Sorcery::Controller::Config.user_config do |user|
|
112
112
|
options.each do |property,value|
|
113
|
-
|
113
|
+
user.send(:"#{property}=", value)
|
114
114
|
end
|
115
115
|
end
|
116
|
+
User.authenticates_with_sorcery!
|
116
117
|
end
|
117
118
|
|
118
119
|
def sorcery_controller_property_set(property, value)
|
119
|
-
::
|
120
|
-
config.send(:"#{property}=", value)
|
121
|
-
end
|
120
|
+
::Sorcery::Controller::Config.send(:"#{property}=", value)
|
122
121
|
end
|
123
122
|
|
124
|
-
def
|
125
|
-
::
|
126
|
-
config.send(provider).send(:"#{property}=", value)
|
127
|
-
end
|
123
|
+
def sorcery_controller_external_property_set(provider, property, value)
|
124
|
+
::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
|
128
125
|
end
|
129
126
|
end
|
130
127
|
end
|
data/sorcery.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sorcery}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Noam Ben Ari"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-21}
|
13
13
|
s.description = %q{Provides common authentication needs such as signing in/out, activating by email and resetting password.}
|
14
14
|
s.email = %q{nbenari@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -38,23 +38,23 @@ Gem::Specification.new do |s|
|
|
38
38
|
"lib/sorcery/controller/adapters/sinatra.rb",
|
39
39
|
"lib/sorcery/controller/submodules/activity_logging.rb",
|
40
40
|
"lib/sorcery/controller/submodules/brute_force_protection.rb",
|
41
|
-
"lib/sorcery/controller/submodules/email.rb",
|
42
41
|
"lib/sorcery/controller/submodules/external.rb",
|
43
42
|
"lib/sorcery/controller/submodules/external/protocols/oauth1.rb",
|
44
43
|
"lib/sorcery/controller/submodules/external/protocols/oauth2.rb",
|
45
44
|
"lib/sorcery/controller/submodules/external/providers/facebook.rb",
|
46
45
|
"lib/sorcery/controller/submodules/external/providers/twitter.rb",
|
47
46
|
"lib/sorcery/controller/submodules/http_basic_auth.rb",
|
48
|
-
"lib/sorcery/controller/submodules/oauth.rb",
|
49
47
|
"lib/sorcery/controller/submodules/remember_me.rb",
|
50
48
|
"lib/sorcery/controller/submodules/session_timeout.rb",
|
51
49
|
"lib/sorcery/crypto_providers/aes256.rb",
|
52
50
|
"lib/sorcery/crypto_providers/bcrypt.rb",
|
51
|
+
"lib/sorcery/crypto_providers/common.rb",
|
53
52
|
"lib/sorcery/crypto_providers/md5.rb",
|
54
53
|
"lib/sorcery/crypto_providers/sha1.rb",
|
55
54
|
"lib/sorcery/crypto_providers/sha256.rb",
|
56
55
|
"lib/sorcery/crypto_providers/sha512.rb",
|
57
56
|
"lib/sorcery/engine.rb",
|
57
|
+
"lib/sorcery/initializers/initializer.rb",
|
58
58
|
"lib/sorcery/model.rb",
|
59
59
|
"lib/sorcery/model/submodules/activity_logging.rb",
|
60
60
|
"lib/sorcery/model/submodules/brute_force_protection.rb",
|
@@ -63,6 +63,7 @@ Gem::Specification.new do |s|
|
|
63
63
|
"lib/sorcery/model/submodules/reset_password.rb",
|
64
64
|
"lib/sorcery/model/submodules/user_activation.rb",
|
65
65
|
"lib/sorcery/model/temporary_token.rb",
|
66
|
+
"lib/sorcery/railties/tasks.rake",
|
66
67
|
"lib/sorcery/sinatra.rb",
|
67
68
|
"lib/sorcery/test_helpers.rb",
|
68
69
|
"lib/sorcery/test_helpers/rails.rb",
|
@@ -71,85 +72,85 @@ Gem::Specification.new do |s|
|
|
71
72
|
"spec/Gemfile",
|
72
73
|
"spec/Gemfile.lock",
|
73
74
|
"spec/Rakefile",
|
75
|
+
"spec/rails3/.gitignore",
|
74
76
|
"spec/rails3/.rspec",
|
75
|
-
"spec/rails3/
|
76
|
-
"spec/rails3/
|
77
|
-
"spec/rails3/
|
78
|
-
"spec/rails3/
|
79
|
-
"spec/rails3/
|
80
|
-
"spec/rails3/
|
81
|
-
"spec/rails3/
|
82
|
-
"spec/rails3/
|
83
|
-
"spec/rails3/
|
84
|
-
"spec/rails3/
|
85
|
-
"spec/rails3/
|
86
|
-
"spec/rails3/
|
87
|
-
"spec/rails3/
|
88
|
-
"spec/rails3/
|
89
|
-
"spec/rails3/
|
90
|
-
"spec/rails3/
|
91
|
-
"spec/rails3/
|
92
|
-
"spec/rails3/
|
93
|
-
"spec/rails3/
|
94
|
-
"spec/rails3/
|
95
|
-
"spec/rails3/
|
96
|
-
"spec/rails3/
|
97
|
-
"spec/rails3/
|
98
|
-
"spec/rails3/
|
99
|
-
"spec/rails3/
|
100
|
-
"spec/rails3/
|
101
|
-
"spec/rails3/
|
102
|
-
"spec/rails3/
|
103
|
-
"spec/rails3/
|
104
|
-
"spec/rails3/
|
105
|
-
"spec/rails3/
|
106
|
-
"spec/rails3/
|
107
|
-
"spec/rails3/
|
108
|
-
"spec/rails3/
|
109
|
-
"spec/rails3/
|
110
|
-
"spec/rails3/
|
111
|
-
"spec/rails3/
|
112
|
-
"spec/rails3/
|
113
|
-
"spec/rails3/
|
114
|
-
"spec/rails3/
|
115
|
-
"spec/rails3/
|
116
|
-
"spec/rails3/
|
117
|
-
"spec/rails3/
|
118
|
-
"spec/rails3/
|
119
|
-
"spec/rails3/
|
120
|
-
"spec/rails3/
|
121
|
-
"spec/rails3/
|
122
|
-
"spec/rails3/
|
123
|
-
"spec/rails3/
|
124
|
-
"spec/rails3/
|
125
|
-
"spec/rails3/
|
126
|
-
"spec/rails3/
|
127
|
-
"spec/rails3/
|
128
|
-
"spec/rails3/
|
129
|
-
"spec/rails3/
|
130
|
-
"spec/rails3/
|
131
|
-
"spec/rails3/
|
132
|
-
"spec/rails3/
|
133
|
-
"spec/rails3/
|
134
|
-
"spec/rails3/
|
135
|
-
"spec/rails3/
|
136
|
-
"spec/rails3/
|
137
|
-
"spec/rails3/
|
138
|
-
"spec/rails3/
|
139
|
-
"spec/rails3/
|
140
|
-
"spec/rails3/
|
141
|
-
"spec/rails3/
|
142
|
-
"spec/rails3/
|
143
|
-
"spec/rails3/
|
144
|
-
"spec/rails3/
|
145
|
-
"spec/rails3/
|
146
|
-
"spec/rails3/
|
147
|
-
"spec/rails3/
|
148
|
-
"spec/rails3/
|
149
|
-
"spec/rails3/
|
150
|
-
"spec/rails3/
|
151
|
-
"spec/rails3/
|
152
|
-
"spec/rails3/app_root/vendor/plugins/.gitkeep",
|
77
|
+
"spec/rails3/Gemfile",
|
78
|
+
"spec/rails3/Gemfile.lock",
|
79
|
+
"spec/rails3/README",
|
80
|
+
"spec/rails3/Rakefile",
|
81
|
+
"spec/rails3/Rakefile.unused",
|
82
|
+
"spec/rails3/app/controllers/application_controller.rb",
|
83
|
+
"spec/rails3/app/helpers/application_helper.rb",
|
84
|
+
"spec/rails3/app/mailers/sorcery_mailer.rb",
|
85
|
+
"spec/rails3/app/models/authentication.rb",
|
86
|
+
"spec/rails3/app/models/user.rb",
|
87
|
+
"spec/rails3/app/views/layouts/application.html.erb",
|
88
|
+
"spec/rails3/app/views/sorcery_mailer/activation_email.html.erb",
|
89
|
+
"spec/rails3/app/views/sorcery_mailer/activation_email.text.erb",
|
90
|
+
"spec/rails3/app/views/sorcery_mailer/activation_success_email.html.erb",
|
91
|
+
"spec/rails3/app/views/sorcery_mailer/activation_success_email.text.erb",
|
92
|
+
"spec/rails3/app/views/sorcery_mailer/reset_password_email.html.erb",
|
93
|
+
"spec/rails3/app/views/sorcery_mailer/reset_password_email.text.erb",
|
94
|
+
"spec/rails3/config.ru",
|
95
|
+
"spec/rails3/config/application.rb",
|
96
|
+
"spec/rails3/config/boot.rb",
|
97
|
+
"spec/rails3/config/database.yml",
|
98
|
+
"spec/rails3/config/environment.rb",
|
99
|
+
"spec/rails3/config/environments/development.rb",
|
100
|
+
"spec/rails3/config/environments/in_memory.rb",
|
101
|
+
"spec/rails3/config/environments/production.rb",
|
102
|
+
"spec/rails3/config/environments/test.rb",
|
103
|
+
"spec/rails3/config/initializers/backtrace_silencers.rb",
|
104
|
+
"spec/rails3/config/initializers/inflections.rb",
|
105
|
+
"spec/rails3/config/initializers/mime_types.rb",
|
106
|
+
"spec/rails3/config/initializers/secret_token.rb",
|
107
|
+
"spec/rails3/config/initializers/session_store.rb",
|
108
|
+
"spec/rails3/config/locales/en.yml",
|
109
|
+
"spec/rails3/config/routes.rb",
|
110
|
+
"spec/rails3/db/migrate/activation/20101224223622_add_activation_to_users.rb",
|
111
|
+
"spec/rails3/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb",
|
112
|
+
"spec/rails3/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb",
|
113
|
+
"spec/rails3/db/migrate/core/20101224223620_create_users.rb",
|
114
|
+
"spec/rails3/db/migrate/external/20101224223628_create_authentications.rb",
|
115
|
+
"spec/rails3/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb",
|
116
|
+
"spec/rails3/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb",
|
117
|
+
"spec/rails3/db/schema.rb",
|
118
|
+
"spec/rails3/db/seeds.rb",
|
119
|
+
"spec/rails3/lib/tasks/.gitkeep",
|
120
|
+
"spec/rails3/public/404.html",
|
121
|
+
"spec/rails3/public/422.html",
|
122
|
+
"spec/rails3/public/500.html",
|
123
|
+
"spec/rails3/public/favicon.ico",
|
124
|
+
"spec/rails3/public/images/rails.png",
|
125
|
+
"spec/rails3/public/index.html",
|
126
|
+
"spec/rails3/public/javascripts/application.js",
|
127
|
+
"spec/rails3/public/javascripts/controls.js",
|
128
|
+
"spec/rails3/public/javascripts/dragdrop.js",
|
129
|
+
"spec/rails3/public/javascripts/effects.js",
|
130
|
+
"spec/rails3/public/javascripts/prototype.js",
|
131
|
+
"spec/rails3/public/javascripts/rails.js",
|
132
|
+
"spec/rails3/public/robots.txt",
|
133
|
+
"spec/rails3/public/stylesheets/.gitkeep",
|
134
|
+
"spec/rails3/script/rails",
|
135
|
+
"spec/rails3/spec/controller_activity_logging_spec.rb",
|
136
|
+
"spec/rails3/spec/controller_brute_force_protection_spec.rb",
|
137
|
+
"spec/rails3/spec/controller_http_basic_auth_spec.rb",
|
138
|
+
"spec/rails3/spec/controller_oauth2_spec.rb",
|
139
|
+
"spec/rails3/spec/controller_oauth_spec.rb",
|
140
|
+
"spec/rails3/spec/controller_remember_me_spec.rb",
|
141
|
+
"spec/rails3/spec/controller_session_timeout_spec.rb",
|
142
|
+
"spec/rails3/spec/controller_spec.rb",
|
143
|
+
"spec/rails3/spec/spec.opts",
|
144
|
+
"spec/rails3/spec/spec_helper.orig.rb",
|
145
|
+
"spec/rails3/spec/spec_helper.rb",
|
146
|
+
"spec/rails3/spec/user_activation_spec.rb",
|
147
|
+
"spec/rails3/spec/user_activity_logging_spec.rb",
|
148
|
+
"spec/rails3/spec/user_brute_force_protection_spec.rb",
|
149
|
+
"spec/rails3/spec/user_oauth_spec.rb",
|
150
|
+
"spec/rails3/spec/user_remember_me_spec.rb",
|
151
|
+
"spec/rails3/spec/user_reset_password_spec.rb",
|
152
|
+
"spec/rails3/spec/user_spec.rb",
|
153
|
+
"spec/rails3/vendor/plugins/.gitkeep",
|
153
154
|
"spec/sinatra/Gemfile",
|
154
155
|
"spec/sinatra/Gemfile.lock",
|
155
156
|
"spec/sinatra/Rakefile",
|
@@ -174,16 +175,10 @@ Gem::Specification.new do |s|
|
|
174
175
|
"spec/sinatra/spec/controller_spec.rb",
|
175
176
|
"spec/sinatra/spec/spec.opts",
|
176
177
|
"spec/sinatra/spec/spec_helper.rb",
|
177
|
-
"spec/sinatra/spec/user_activation_spec.rb",
|
178
|
-
"spec/sinatra/spec/user_activity_logging_spec.rb",
|
179
|
-
"spec/sinatra/spec/user_brute_force_protection_spec.rb",
|
180
|
-
"spec/sinatra/spec/user_oauth_spec.rb",
|
181
|
-
"spec/sinatra/spec/user_remember_me_spec.rb",
|
182
|
-
"spec/sinatra/spec/user_reset_password_spec.rb",
|
183
|
-
"spec/sinatra/spec/user_spec.rb",
|
184
178
|
"spec/sinatra/user.rb",
|
185
179
|
"spec/sinatra/views/test_login.erb",
|
186
180
|
"spec/sorcery_crypto_providers_spec.rb",
|
181
|
+
"spec/spec.opts",
|
187
182
|
"spec/spec_helper.rb",
|
188
183
|
"spec/untitled folder"
|
189
184
|
]
|
@@ -193,50 +188,50 @@ Gem::Specification.new do |s|
|
|
193
188
|
s.rubygems_version = %q{1.6.2}
|
194
189
|
s.summary = %q{Magical authentication for Rails 3 applications}
|
195
190
|
s.test_files = [
|
196
|
-
"spec/rails3/
|
197
|
-
"spec/rails3/
|
198
|
-
"spec/rails3/
|
199
|
-
"spec/rails3/
|
200
|
-
"spec/rails3/
|
201
|
-
"spec/rails3/
|
202
|
-
"spec/rails3/
|
203
|
-
"spec/rails3/
|
204
|
-
"spec/rails3/
|
205
|
-
"spec/rails3/
|
206
|
-
"spec/rails3/
|
207
|
-
"spec/rails3/
|
208
|
-
"spec/rails3/
|
209
|
-
"spec/rails3/
|
210
|
-
"spec/rails3/
|
211
|
-
"spec/rails3/
|
212
|
-
"spec/rails3/
|
213
|
-
"spec/rails3/
|
214
|
-
"spec/rails3/
|
215
|
-
"spec/rails3/
|
216
|
-
"spec/rails3/
|
217
|
-
"spec/rails3/
|
218
|
-
"spec/rails3/
|
219
|
-
"spec/rails3/
|
220
|
-
"spec/rails3/
|
221
|
-
"spec/rails3/
|
222
|
-
"spec/rails3/
|
223
|
-
"spec/rails3/
|
224
|
-
"spec/rails3/
|
225
|
-
"spec/rails3/
|
226
|
-
"spec/rails3/
|
227
|
-
"spec/rails3/
|
228
|
-
"spec/rails3/
|
229
|
-
"spec/rails3/
|
230
|
-
"spec/rails3/
|
231
|
-
"spec/rails3/
|
232
|
-
"spec/rails3/
|
233
|
-
"spec/rails3/
|
234
|
-
"spec/rails3/
|
235
|
-
"spec/rails3/
|
236
|
-
"spec/rails3/
|
237
|
-
"spec/rails3/
|
238
|
-
"spec/rails3/
|
239
|
-
"spec/rails3/
|
191
|
+
"spec/rails3/app/controllers/application_controller.rb",
|
192
|
+
"spec/rails3/app/helpers/application_helper.rb",
|
193
|
+
"spec/rails3/app/mailers/sorcery_mailer.rb",
|
194
|
+
"spec/rails3/app/models/authentication.rb",
|
195
|
+
"spec/rails3/app/models/user.rb",
|
196
|
+
"spec/rails3/config/application.rb",
|
197
|
+
"spec/rails3/config/boot.rb",
|
198
|
+
"spec/rails3/config/environment.rb",
|
199
|
+
"spec/rails3/config/environments/development.rb",
|
200
|
+
"spec/rails3/config/environments/in_memory.rb",
|
201
|
+
"spec/rails3/config/environments/production.rb",
|
202
|
+
"spec/rails3/config/environments/test.rb",
|
203
|
+
"spec/rails3/config/initializers/backtrace_silencers.rb",
|
204
|
+
"spec/rails3/config/initializers/inflections.rb",
|
205
|
+
"spec/rails3/config/initializers/mime_types.rb",
|
206
|
+
"spec/rails3/config/initializers/secret_token.rb",
|
207
|
+
"spec/rails3/config/initializers/session_store.rb",
|
208
|
+
"spec/rails3/config/routes.rb",
|
209
|
+
"spec/rails3/db/migrate/activation/20101224223622_add_activation_to_users.rb",
|
210
|
+
"spec/rails3/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb",
|
211
|
+
"spec/rails3/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb",
|
212
|
+
"spec/rails3/db/migrate/core/20101224223620_create_users.rb",
|
213
|
+
"spec/rails3/db/migrate/external/20101224223628_create_authentications.rb",
|
214
|
+
"spec/rails3/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb",
|
215
|
+
"spec/rails3/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb",
|
216
|
+
"spec/rails3/db/schema.rb",
|
217
|
+
"spec/rails3/db/seeds.rb",
|
218
|
+
"spec/rails3/spec/controller_activity_logging_spec.rb",
|
219
|
+
"spec/rails3/spec/controller_brute_force_protection_spec.rb",
|
220
|
+
"spec/rails3/spec/controller_http_basic_auth_spec.rb",
|
221
|
+
"spec/rails3/spec/controller_oauth2_spec.rb",
|
222
|
+
"spec/rails3/spec/controller_oauth_spec.rb",
|
223
|
+
"spec/rails3/spec/controller_remember_me_spec.rb",
|
224
|
+
"spec/rails3/spec/controller_session_timeout_spec.rb",
|
225
|
+
"spec/rails3/spec/controller_spec.rb",
|
226
|
+
"spec/rails3/spec/spec_helper.orig.rb",
|
227
|
+
"spec/rails3/spec/spec_helper.rb",
|
228
|
+
"spec/rails3/spec/user_activation_spec.rb",
|
229
|
+
"spec/rails3/spec/user_activity_logging_spec.rb",
|
230
|
+
"spec/rails3/spec/user_brute_force_protection_spec.rb",
|
231
|
+
"spec/rails3/spec/user_oauth_spec.rb",
|
232
|
+
"spec/rails3/spec/user_remember_me_spec.rb",
|
233
|
+
"spec/rails3/spec/user_reset_password_spec.rb",
|
234
|
+
"spec/rails3/spec/user_spec.rb",
|
240
235
|
"spec/sinatra/authentication.rb",
|
241
236
|
"spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb",
|
242
237
|
"spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb",
|
@@ -257,13 +252,6 @@ Gem::Specification.new do |s|
|
|
257
252
|
"spec/sinatra/spec/controller_session_timeout_spec.rb",
|
258
253
|
"spec/sinatra/spec/controller_spec.rb",
|
259
254
|
"spec/sinatra/spec/spec_helper.rb",
|
260
|
-
"spec/sinatra/spec/user_activation_spec.rb",
|
261
|
-
"spec/sinatra/spec/user_activity_logging_spec.rb",
|
262
|
-
"spec/sinatra/spec/user_brute_force_protection_spec.rb",
|
263
|
-
"spec/sinatra/spec/user_oauth_spec.rb",
|
264
|
-
"spec/sinatra/spec/user_remember_me_spec.rb",
|
265
|
-
"spec/sinatra/spec/user_reset_password_spec.rb",
|
266
|
-
"spec/sinatra/spec/user_spec.rb",
|
267
255
|
"spec/sinatra/user.rb",
|
268
256
|
"spec/sorcery_crypto_providers_spec.rb",
|
269
257
|
"spec/spec_helper.rb"
|
@@ -277,14 +265,15 @@ Gem::Specification.new do |s|
|
|
277
265
|
s.add_runtime_dependency(%q<json>, [">= 1.5.1"])
|
278
266
|
s.add_runtime_dependency(%q<oauth>, [">= 0.4.4"])
|
279
267
|
s.add_runtime_dependency(%q<oauth2>, [">= 0.1.1"])
|
280
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.
|
281
|
-
s.add_development_dependency(%q<rspec-rails>, ["
|
268
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.5.0"])
|
269
|
+
s.add_development_dependency(%q<rspec-rails>, ["~> 2.5.0"])
|
282
270
|
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
283
271
|
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
284
272
|
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
285
273
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
286
274
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
287
275
|
s.add_development_dependency(%q<simplecov>, [">= 0.3.8"])
|
276
|
+
s.add_development_dependency(%q<timecop>, [">= 0"])
|
288
277
|
s.add_runtime_dependency(%q<bcrypt-ruby>, ["~> 2.1.4"])
|
289
278
|
s.add_runtime_dependency(%q<oauth>, [">= 0.4.4"])
|
290
279
|
s.add_runtime_dependency(%q<oauth2>, [">= 0.1.1"])
|
@@ -293,14 +282,15 @@ Gem::Specification.new do |s|
|
|
293
282
|
s.add_dependency(%q<json>, [">= 1.5.1"])
|
294
283
|
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
295
284
|
s.add_dependency(%q<oauth2>, [">= 0.1.1"])
|
296
|
-
s.add_dependency(%q<rspec>, ["~> 2.
|
297
|
-
s.add_dependency(%q<rspec-rails>, ["
|
285
|
+
s.add_dependency(%q<rspec>, ["~> 2.5.0"])
|
286
|
+
s.add_dependency(%q<rspec-rails>, ["~> 2.5.0"])
|
298
287
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
299
288
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
300
289
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
301
290
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
302
291
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
303
292
|
s.add_dependency(%q<simplecov>, [">= 0.3.8"])
|
293
|
+
s.add_dependency(%q<timecop>, [">= 0"])
|
304
294
|
s.add_dependency(%q<bcrypt-ruby>, ["~> 2.1.4"])
|
305
295
|
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
306
296
|
s.add_dependency(%q<oauth2>, [">= 0.1.1"])
|
@@ -310,14 +300,15 @@ Gem::Specification.new do |s|
|
|
310
300
|
s.add_dependency(%q<json>, [">= 1.5.1"])
|
311
301
|
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
312
302
|
s.add_dependency(%q<oauth2>, [">= 0.1.1"])
|
313
|
-
s.add_dependency(%q<rspec>, ["~> 2.
|
314
|
-
s.add_dependency(%q<rspec-rails>, ["
|
303
|
+
s.add_dependency(%q<rspec>, ["~> 2.5.0"])
|
304
|
+
s.add_dependency(%q<rspec-rails>, ["~> 2.5.0"])
|
315
305
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
316
306
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
317
307
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
318
308
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
319
309
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
320
310
|
s.add_dependency(%q<simplecov>, [">= 0.3.8"])
|
311
|
+
s.add_dependency(%q<timecop>, [">= 0"])
|
321
312
|
s.add_dependency(%q<bcrypt-ruby>, ["~> 2.1.4"])
|
322
313
|
s.add_dependency(%q<oauth>, [">= 0.4.4"])
|
323
314
|
s.add_dependency(%q<oauth2>, [">= 0.1.1"])
|