sorcery 0.7.4 → 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.
- data/.travis.yml +3 -0
- data/Gemfile +9 -4
- data/Gemfile.lock +103 -62
- data/README.rdoc +33 -8
- data/Rakefile +6 -7
- data/VERSION +1 -1
- data/lib/generators/sorcery/install_generator.rb +15 -10
- data/lib/generators/sorcery/templates/initializer.rb +343 -125
- data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +2 -0
- data/lib/generators/sorcery/templates/migration/reset_password.rb +1 -1
- data/lib/sorcery/controller/submodules/activity_logging.rb +3 -3
- data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
- data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +19 -19
- data/lib/sorcery/controller/submodules/external/providers/facebook.rb +20 -5
- data/lib/sorcery/controller/submodules/external/providers/github.rb +15 -4
- data/lib/sorcery/controller/submodules/external/providers/google.rb +90 -0
- data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +101 -0
- data/lib/sorcery/controller/submodules/external/providers/liveid.rb +91 -0
- data/lib/sorcery/controller/submodules/external/providers/twitter.rb +2 -1
- data/lib/sorcery/controller/submodules/external/providers/vkontakte.rb +94 -0
- data/lib/sorcery/controller/submodules/external.rb +89 -15
- data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -1
- data/lib/sorcery/controller/submodules/remember_me.rb +11 -2
- data/lib/sorcery/controller.rb +14 -6
- data/lib/sorcery/crypto_providers/bcrypt.rb +1 -0
- data/lib/sorcery/model/adapters/active_record.rb +21 -1
- data/lib/sorcery/model/adapters/mongo_mapper.rb +22 -15
- data/lib/sorcery/model/adapters/mongoid.rb +20 -3
- data/lib/sorcery/model/submodules/activity_logging.rb +4 -4
- data/lib/sorcery/model/submodules/brute_force_protection.rb +46 -15
- data/lib/sorcery/model/submodules/remember_me.rb +4 -6
- data/lib/sorcery/model/submodules/reset_password.rb +18 -12
- data/lib/sorcery/model/submodules/user_activation.rb +15 -8
- data/lib/sorcery/model.rb +57 -43
- data/lib/sorcery/railties/tasks.rake +2 -0
- data/lib/sorcery.rb +5 -1
- data/sorcery.gemspec +33 -21
- data/spec/Gemfile +1 -1
- data/spec/Gemfile.lock +22 -21
- data/spec/README.md +8 -8
- data/spec/rails3/Gemfile +3 -3
- data/spec/rails3/Gemfile.lock +55 -33
- data/spec/rails3/app/controllers/application_controller.rb +85 -2
- data/spec/rails3/app/mailers/sorcery_mailer.rb +7 -0
- data/spec/rails3/app/views/sorcery_mailer/send_unlock_token_email.text.erb +1 -0
- data/spec/rails3/config/environments/in_memory.rb +35 -0
- data/spec/rails3/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +2 -0
- data/spec/rails3/spec/controller_activity_logging_spec.rb +10 -0
- data/spec/rails3/spec/controller_brute_force_protection_spec.rb +23 -1
- data/spec/rails3/spec/controller_oauth2_spec.rb +260 -22
- data/spec/rails3/spec/controller_oauth_spec.rb +111 -6
- data/spec/rails3/spec/controller_spec.rb +37 -2
- data/spec/rails3/spec/integration_spec.rb +15 -15
- data/spec/rails3/spec/spec_helper.rb +1 -1
- data/spec/rails3_mongo_mapper/Gemfile +2 -1
- data/spec/rails3_mongo_mapper/Gemfile.lock +40 -42
- data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +14 -0
- data/spec/rails3_mongo_mapper/spec/controller_spec.rb +41 -1
- data/spec/rails3_mongoid/Gemfile +1 -0
- data/spec/rails3_mongoid/Gemfile.lock +30 -27
- data/spec/rails3_mongoid/app/controllers/application_controller.rb +19 -0
- data/spec/rails3_mongoid/config/mongoid.yml +1 -1
- data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +18 -11
- data/spec/rails3_mongoid/spec/controller_spec.rb +41 -1
- data/spec/shared_examples/controller_oauth2_shared_examples.rb +20 -1
- data/spec/shared_examples/controller_oauth_shared_examples.rb +18 -0
- data/spec/shared_examples/user_activation_shared_examples.rb +71 -41
- data/spec/shared_examples/user_reset_password_shared_examples.rb +80 -27
- data/spec/sorcery_crypto_providers_spec.rb +14 -1
- metadata +74 -46
|
@@ -34,9 +34,18 @@ shared_examples_for "rails_3_activation_model" do
|
|
|
34
34
|
sorcery_model_property_set(:activation_success_email_method_name, :my_activation_email)
|
|
35
35
|
User.sorcery_config.activation_success_email_method_name.should equal(:my_activation_email)
|
|
36
36
|
end
|
|
37
|
+
|
|
38
|
+
it "should enable configuration option 'activation_mailer_disabled'" do
|
|
39
|
+
sorcery_model_property_set(:activation_mailer_disabled, :my_activation_mailer_disabled)
|
|
40
|
+
User.sorcery_config.activation_mailer_disabled.should equal(:my_activation_mailer_disabled)
|
|
41
|
+
end
|
|
37
42
|
|
|
38
|
-
it "if mailer is nil
|
|
39
|
-
expect{sorcery_reload!([:user_activation])}.to raise_error(ArgumentError)
|
|
43
|
+
it "if mailer is nil and mailer is enabled, throw exception!" do
|
|
44
|
+
expect{sorcery_reload!([:user_activation], :activation_mailer_disabled => false)}.to raise_error(ArgumentError)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "if mailer is disabled and mailer is nil, do NOT throw exception" do
|
|
48
|
+
expect{sorcery_reload!([:user_activation], :activation_mailer_disabled => true)}.to_not raise_error
|
|
40
49
|
end
|
|
41
50
|
end
|
|
42
51
|
|
|
@@ -64,46 +73,67 @@ shared_examples_for "rails_3_activation_model" do
|
|
|
64
73
|
@user2.activation_state.should == "active"
|
|
65
74
|
User.find_by_activation_token(activation_token).should be_nil
|
|
66
75
|
end
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
context "mailer is enabled" do
|
|
79
|
+
it "should send the user an activation email" do
|
|
80
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
81
|
+
create_new_user
|
|
82
|
+
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "subsequent saves do not send activation email" do
|
|
86
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
87
|
+
@user.username = "Shauli"
|
|
88
|
+
@user.save!
|
|
89
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should send the user an activation success email on successful activation" do
|
|
93
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
94
|
+
@user.activate!
|
|
95
|
+
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "subsequent saves do not send activation success email" do
|
|
99
|
+
@user.activate!
|
|
100
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
101
|
+
@user.username = "Shauli"
|
|
102
|
+
@user.save!
|
|
103
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "activation needed email is optional" do
|
|
107
|
+
sorcery_model_property_set(:activation_needed_email_method_name, nil)
|
|
108
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
109
|
+
create_new_user
|
|
110
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "activation success email is optional" do
|
|
114
|
+
sorcery_model_property_set(:activation_success_email_method_name, nil)
|
|
115
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
116
|
+
@user.activate!
|
|
117
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
118
|
+
end
|
|
100
119
|
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
120
|
+
|
|
121
|
+
context "mailer has been disabled" do
|
|
122
|
+
before(:each) do
|
|
123
|
+
sorcery_reload!([:user_activation], :activation_mailer_disabled => true, :user_activation_mailer => ::SorceryMailer)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "should not send the user an activation email" do
|
|
127
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
128
|
+
create_new_user
|
|
129
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "should not send the user an activation success email on successful activation" do
|
|
133
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
134
|
+
@user.activate!
|
|
135
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
136
|
+
end
|
|
107
137
|
end
|
|
108
138
|
end
|
|
109
139
|
|
|
@@ -33,7 +33,20 @@ shared_examples_for "rails_3_reset_password_model" do
|
|
|
33
33
|
sorcery_model_property_set(:reset_password_mailer, TestUser)
|
|
34
34
|
User.sorcery_config.reset_password_mailer.should equal(TestUser)
|
|
35
35
|
end
|
|
36
|
+
|
|
37
|
+
it "should enable configuration option 'reset_password_mailer_disabled'" do
|
|
38
|
+
sorcery_model_property_set(:reset_password_mailer_disabled, :my_reset_password_mailer_disabled)
|
|
39
|
+
User.sorcery_config.reset_password_mailer_disabled.should equal(:my_reset_password_mailer_disabled)
|
|
40
|
+
end
|
|
36
41
|
|
|
42
|
+
it "if mailer is nil and mailer is enabled, throw exception!" do
|
|
43
|
+
expect{sorcery_reload!([:reset_password], :reset_password_mailer_disabled => false)}.to raise_error(ArgumentError)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "if mailer is disabled and mailer is nil, do NOT throw exception" do
|
|
47
|
+
expect{sorcery_reload!([:reset_password], :reset_password_mailer_disabled => true)}.to_not raise_error
|
|
48
|
+
end
|
|
49
|
+
|
|
37
50
|
it "should allow configuration option 'reset_password_email_method_name'" do
|
|
38
51
|
sorcery_model_property_set(:reset_password_email_method_name, :my_mailer_method)
|
|
39
52
|
User.sorcery_config.reset_password_email_method_name.should equal(:my_mailer_method)
|
|
@@ -125,11 +138,69 @@ shared_examples_for "rails_3_reset_password_model" do
|
|
|
125
138
|
@user.reset_password_token.should_not == old_password_code
|
|
126
139
|
end
|
|
127
140
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
141
|
+
context "mailer is enabled" do
|
|
142
|
+
it "should send an email on reset" do
|
|
143
|
+
create_new_user
|
|
144
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
145
|
+
@user.deliver_reset_password_instructions!
|
|
146
|
+
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "should not send an email if time between emails has not passed since last email" do
|
|
150
|
+
create_new_user
|
|
151
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 10000)
|
|
152
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
153
|
+
@user.deliver_reset_password_instructions!
|
|
154
|
+
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
155
|
+
@user.deliver_reset_password_instructions!
|
|
156
|
+
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it "should send an email if time between emails has passed since last email" do
|
|
160
|
+
create_new_user
|
|
161
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 0.5)
|
|
162
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
163
|
+
@user.deliver_reset_password_instructions!
|
|
164
|
+
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
165
|
+
Timecop.travel(Time.now.in_time_zone+0.5)
|
|
166
|
+
@user.deliver_reset_password_instructions!
|
|
167
|
+
ActionMailer::Base.deliveries.size.should == old_size + 2
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
context "mailer is disabled" do
|
|
172
|
+
|
|
173
|
+
before(:all) do
|
|
174
|
+
sorcery_reload!([:reset_password], :reset_password_mailer_disabled => true, :reset_password_mailer => ::SorceryMailer)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it "should send an email on reset" do
|
|
178
|
+
create_new_user
|
|
179
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
180
|
+
@user.deliver_reset_password_instructions!
|
|
181
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "should not send an email if time between emails has not passed since last email" do
|
|
185
|
+
create_new_user
|
|
186
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 10000)
|
|
187
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
188
|
+
@user.deliver_reset_password_instructions!
|
|
189
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
190
|
+
@user.deliver_reset_password_instructions!
|
|
191
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it "should send an email if time between emails has passed since last email" do
|
|
195
|
+
create_new_user
|
|
196
|
+
sorcery_model_property_set(:reset_password_time_between_emails, 0.5)
|
|
197
|
+
old_size = ActionMailer::Base.deliveries.size
|
|
198
|
+
@user.deliver_reset_password_instructions!
|
|
199
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
200
|
+
Timecop.travel(Time.now.in_time_zone+0.5)
|
|
201
|
+
@user.deliver_reset_password_instructions!
|
|
202
|
+
ActionMailer::Base.deliveries.size.should == old_size
|
|
203
|
+
end
|
|
133
204
|
end
|
|
134
205
|
|
|
135
206
|
it "when change_password! is called, should delete reset_password_token" do
|
|
@@ -140,26 +211,12 @@ shared_examples_for "rails_3_reset_password_model" do
|
|
|
140
211
|
@user.save!
|
|
141
212
|
@user.reset_password_token.should be_nil
|
|
142
213
|
end
|
|
143
|
-
|
|
144
|
-
it "should
|
|
214
|
+
|
|
215
|
+
it "should return false if time between emails has not passed since last email" do
|
|
145
216
|
create_new_user
|
|
146
217
|
sorcery_model_property_set(:reset_password_time_between_emails, 10000)
|
|
147
|
-
old_size = ActionMailer::Base.deliveries.size
|
|
148
|
-
@user.deliver_reset_password_instructions!
|
|
149
|
-
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
150
|
-
@user.deliver_reset_password_instructions!
|
|
151
|
-
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
it "should send an email if time between emails has passed since last email" do
|
|
155
|
-
create_new_user
|
|
156
|
-
sorcery_model_property_set(:reset_password_time_between_emails, 0.5)
|
|
157
|
-
old_size = ActionMailer::Base.deliveries.size
|
|
158
|
-
@user.deliver_reset_password_instructions!
|
|
159
|
-
ActionMailer::Base.deliveries.size.should == old_size + 1
|
|
160
|
-
Timecop.travel(Time.now.in_time_zone+0.5)
|
|
161
218
|
@user.deliver_reset_password_instructions!
|
|
162
|
-
|
|
219
|
+
@user.deliver_reset_password_instructions!.should == false
|
|
163
220
|
end
|
|
164
221
|
|
|
165
222
|
it "should encrypt properly on reset" do
|
|
@@ -169,9 +226,5 @@ shared_examples_for "rails_3_reset_password_model" do
|
|
|
169
226
|
Sorcery::CryptoProviders::BCrypt.matches?(@user.crypted_password,"blagu",@user.salt).should be_true
|
|
170
227
|
end
|
|
171
228
|
|
|
172
|
-
it "if mailer is nil on activation, throw exception!" do
|
|
173
|
-
expect{sorcery_reload!([:reset_password])}.to raise_error(ArgumentError)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
229
|
end
|
|
177
|
-
end
|
|
230
|
+
end
|
|
@@ -54,7 +54,11 @@ describe "Crypto Providers wrappers" do
|
|
|
54
54
|
it "matches? returns false when no match" do
|
|
55
55
|
Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Some Dude').should be_false
|
|
56
56
|
end
|
|
57
|
-
|
|
57
|
+
|
|
58
|
+
it "matches password encrypted using salt and join token from upstream" do
|
|
59
|
+
Sorcery::CryptoProviders::SHA1.join_token = "test"
|
|
60
|
+
Sorcery::CryptoProviders::SHA1.encrypt(['password', 'gq18WBnJYNh2arkC1kgH']).should == '894b5bf1643b8d0e1b2eaddb22426be7036dab70'
|
|
61
|
+
end
|
|
58
62
|
end
|
|
59
63
|
|
|
60
64
|
describe Sorcery::CryptoProviders::SHA256 do
|
|
@@ -177,6 +181,15 @@ describe "Crypto Providers wrappers" do
|
|
|
177
181
|
it "matches? returns false when no match" do
|
|
178
182
|
Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Some Dude').should be_false
|
|
179
183
|
end
|
|
184
|
+
|
|
185
|
+
it "respond_to?(:stretches) returns true" do
|
|
186
|
+
Sorcery::CryptoProviders::BCrypt.respond_to?(:stretches).should be_true
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
it "sets cost when stretches is set" do
|
|
190
|
+
Sorcery::CryptoProviders::BCrypt.stretches = 4
|
|
191
|
+
Sorcery::CryptoProviders::BCrypt.cost.should == 4
|
|
192
|
+
end
|
|
180
193
|
|
|
181
194
|
end
|
|
182
195
|
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sorcery
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.8.0
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Noam Ben Ari
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date:
|
|
13
|
+
date: 2013-01-12 00:00:00 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: oauth
|
|
@@ -30,164 +30,186 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ~>
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.
|
|
33
|
+
version: 0.8.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: *id002
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
|
-
name:
|
|
38
|
+
name: bcrypt-ruby
|
|
39
39
|
requirement: &id003 !ruby/object:Gem::Requirement
|
|
40
40
|
none: false
|
|
41
41
|
requirements:
|
|
42
|
-
- -
|
|
42
|
+
- - ~>
|
|
43
43
|
- !ruby/object:Gem::Version
|
|
44
44
|
version: 3.0.0
|
|
45
|
-
type: :
|
|
45
|
+
type: :runtime
|
|
46
46
|
prerelease: false
|
|
47
47
|
version_requirements: *id003
|
|
48
48
|
- !ruby/object:Gem::Dependency
|
|
49
|
-
name:
|
|
49
|
+
name: abstract
|
|
50
50
|
requirement: &id004 !ruby/object:Gem::Requirement
|
|
51
51
|
none: false
|
|
52
52
|
requirements:
|
|
53
53
|
- - ">="
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 1.
|
|
55
|
+
version: 1.0.0
|
|
56
56
|
type: :development
|
|
57
57
|
prerelease: false
|
|
58
58
|
version_requirements: *id004
|
|
59
59
|
- !ruby/object:Gem::Dependency
|
|
60
|
-
name:
|
|
60
|
+
name: rails
|
|
61
61
|
requirement: &id005 !ruby/object:Gem::Requirement
|
|
62
62
|
none: false
|
|
63
63
|
requirements:
|
|
64
|
-
- -
|
|
64
|
+
- - ">="
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version:
|
|
66
|
+
version: 3.0.0
|
|
67
67
|
type: :development
|
|
68
68
|
prerelease: false
|
|
69
69
|
version_requirements: *id005
|
|
70
70
|
- !ruby/object:Gem::Dependency
|
|
71
|
-
name:
|
|
71
|
+
name: json
|
|
72
72
|
requirement: &id006 !ruby/object:Gem::Requirement
|
|
73
73
|
none: false
|
|
74
74
|
requirements:
|
|
75
|
-
- -
|
|
75
|
+
- - ">="
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
77
|
+
version: 1.5.1
|
|
78
78
|
type: :development
|
|
79
79
|
prerelease: false
|
|
80
80
|
version_requirements: *id006
|
|
81
81
|
- !ruby/object:Gem::Dependency
|
|
82
|
-
name:
|
|
82
|
+
name: rspec
|
|
83
83
|
requirement: &id007 !ruby/object:Gem::Requirement
|
|
84
84
|
none: false
|
|
85
85
|
requirements:
|
|
86
|
-
- -
|
|
86
|
+
- - ~>
|
|
87
87
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
88
|
+
version: 2.5.0
|
|
89
89
|
type: :development
|
|
90
90
|
prerelease: false
|
|
91
91
|
version_requirements: *id007
|
|
92
92
|
- !ruby/object:Gem::Dependency
|
|
93
|
-
name:
|
|
93
|
+
name: rspec-rails
|
|
94
94
|
requirement: &id008 !ruby/object:Gem::Requirement
|
|
95
95
|
none: false
|
|
96
96
|
requirements:
|
|
97
|
-
- -
|
|
97
|
+
- - ~>
|
|
98
98
|
- !ruby/object:Gem::Version
|
|
99
|
-
version:
|
|
99
|
+
version: 2.5.0
|
|
100
100
|
type: :development
|
|
101
101
|
prerelease: false
|
|
102
102
|
version_requirements: *id008
|
|
103
103
|
- !ruby/object:Gem::Dependency
|
|
104
|
-
name:
|
|
104
|
+
name: ruby-debug19
|
|
105
105
|
requirement: &id009 !ruby/object:Gem::Requirement
|
|
106
106
|
none: false
|
|
107
107
|
requirements:
|
|
108
|
-
- -
|
|
108
|
+
- - ">="
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 0
|
|
110
|
+
version: "0"
|
|
111
111
|
type: :development
|
|
112
112
|
prerelease: false
|
|
113
113
|
version_requirements: *id009
|
|
114
114
|
- !ruby/object:Gem::Dependency
|
|
115
|
-
name:
|
|
115
|
+
name: sqlite3-ruby
|
|
116
116
|
requirement: &id010 !ruby/object:Gem::Requirement
|
|
117
117
|
none: false
|
|
118
118
|
requirements:
|
|
119
|
-
- -
|
|
119
|
+
- - ">="
|
|
120
120
|
- !ruby/object:Gem::Version
|
|
121
|
-
version:
|
|
121
|
+
version: "0"
|
|
122
122
|
type: :development
|
|
123
123
|
prerelease: false
|
|
124
124
|
version_requirements: *id010
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
126
|
+
name: yard
|
|
127
127
|
requirement: &id011 !ruby/object:Gem::Requirement
|
|
128
128
|
none: false
|
|
129
129
|
requirements:
|
|
130
130
|
- - ~>
|
|
131
131
|
- !ruby/object:Gem::Version
|
|
132
|
-
version:
|
|
132
|
+
version: 0.6.0
|
|
133
133
|
type: :development
|
|
134
134
|
prerelease: false
|
|
135
135
|
version_requirements: *id011
|
|
136
136
|
- !ruby/object:Gem::Dependency
|
|
137
|
-
name:
|
|
137
|
+
name: bundler
|
|
138
138
|
requirement: &id012 !ruby/object:Gem::Requirement
|
|
139
139
|
none: false
|
|
140
140
|
requirements:
|
|
141
141
|
- - ">="
|
|
142
142
|
- !ruby/object:Gem::Version
|
|
143
|
-
version:
|
|
143
|
+
version: 1.1.0
|
|
144
144
|
type: :development
|
|
145
145
|
prerelease: false
|
|
146
146
|
version_requirements: *id012
|
|
147
147
|
- !ruby/object:Gem::Dependency
|
|
148
|
-
name:
|
|
148
|
+
name: jeweler
|
|
149
149
|
requirement: &id013 !ruby/object:Gem::Requirement
|
|
150
150
|
none: false
|
|
151
151
|
requirements:
|
|
152
|
-
- -
|
|
152
|
+
- - ~>
|
|
153
153
|
- !ruby/object:Gem::Version
|
|
154
|
-
version:
|
|
154
|
+
version: 1.8.3
|
|
155
155
|
type: :development
|
|
156
156
|
prerelease: false
|
|
157
157
|
version_requirements: *id013
|
|
158
158
|
- !ruby/object:Gem::Dependency
|
|
159
|
-
name:
|
|
159
|
+
name: simplecov
|
|
160
160
|
requirement: &id014 !ruby/object:Gem::Requirement
|
|
161
161
|
none: false
|
|
162
162
|
requirements:
|
|
163
|
-
- -
|
|
163
|
+
- - ">="
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
|
-
version: 3.
|
|
166
|
-
type: :
|
|
165
|
+
version: 0.3.8
|
|
166
|
+
type: :development
|
|
167
167
|
prerelease: false
|
|
168
168
|
version_requirements: *id014
|
|
169
169
|
- !ruby/object:Gem::Dependency
|
|
170
|
-
name:
|
|
170
|
+
name: timecop
|
|
171
171
|
requirement: &id015 !ruby/object:Gem::Requirement
|
|
172
172
|
none: false
|
|
173
173
|
requirements:
|
|
174
|
-
- -
|
|
174
|
+
- - ">="
|
|
175
175
|
- !ruby/object:Gem::Version
|
|
176
|
-
version: 0
|
|
177
|
-
type: :
|
|
176
|
+
version: "0"
|
|
177
|
+
type: :development
|
|
178
178
|
prerelease: false
|
|
179
179
|
version_requirements: *id015
|
|
180
180
|
- !ruby/object:Gem::Dependency
|
|
181
|
-
name:
|
|
181
|
+
name: capybara
|
|
182
182
|
requirement: &id016 !ruby/object:Gem::Requirement
|
|
183
183
|
none: false
|
|
184
184
|
requirements:
|
|
185
|
-
- -
|
|
185
|
+
- - ">="
|
|
186
186
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: 0
|
|
188
|
-
type: :
|
|
187
|
+
version: "0"
|
|
188
|
+
type: :development
|
|
189
189
|
prerelease: false
|
|
190
190
|
version_requirements: *id016
|
|
191
|
+
- !ruby/object:Gem::Dependency
|
|
192
|
+
name: mongo_mapper
|
|
193
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
|
194
|
+
none: false
|
|
195
|
+
requirements:
|
|
196
|
+
- - ">="
|
|
197
|
+
- !ruby/object:Gem::Version
|
|
198
|
+
version: "0"
|
|
199
|
+
type: :development
|
|
200
|
+
prerelease: false
|
|
201
|
+
version_requirements: *id017
|
|
202
|
+
- !ruby/object:Gem::Dependency
|
|
203
|
+
name: mongoid
|
|
204
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
|
205
|
+
none: false
|
|
206
|
+
requirements:
|
|
207
|
+
- - ~>
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: 2.4.4
|
|
210
|
+
type: :development
|
|
211
|
+
prerelease: false
|
|
212
|
+
version_requirements: *id018
|
|
191
213
|
description: Provides common authentication needs such as signing in/out, activating by email and resetting password.
|
|
192
214
|
email: nbenari@gmail.com
|
|
193
215
|
executables: []
|
|
@@ -200,6 +222,7 @@ extra_rdoc_files:
|
|
|
200
222
|
files:
|
|
201
223
|
- .document
|
|
202
224
|
- .rspec
|
|
225
|
+
- .travis.yml
|
|
203
226
|
- Gemfile
|
|
204
227
|
- Gemfile.lock
|
|
205
228
|
- LICENSE.txt
|
|
@@ -226,7 +249,11 @@ files:
|
|
|
226
249
|
- lib/sorcery/controller/submodules/external/protocols/oauth2.rb
|
|
227
250
|
- lib/sorcery/controller/submodules/external/providers/facebook.rb
|
|
228
251
|
- lib/sorcery/controller/submodules/external/providers/github.rb
|
|
252
|
+
- lib/sorcery/controller/submodules/external/providers/google.rb
|
|
253
|
+
- lib/sorcery/controller/submodules/external/providers/linkedin.rb
|
|
254
|
+
- lib/sorcery/controller/submodules/external/providers/liveid.rb
|
|
229
255
|
- lib/sorcery/controller/submodules/external/providers/twitter.rb
|
|
256
|
+
- lib/sorcery/controller/submodules/external/providers/vkontakte.rb
|
|
230
257
|
- lib/sorcery/controller/submodules/http_basic_auth.rb
|
|
231
258
|
- lib/sorcery/controller/submodules/remember_me.rb
|
|
232
259
|
- lib/sorcery/controller/submodules/session_timeout.rb
|
|
@@ -278,6 +305,7 @@ files:
|
|
|
278
305
|
- spec/rails3/app/views/sorcery_mailer/activation_success_email.text.erb
|
|
279
306
|
- spec/rails3/app/views/sorcery_mailer/reset_password_email.html.erb
|
|
280
307
|
- spec/rails3/app/views/sorcery_mailer/reset_password_email.text.erb
|
|
308
|
+
- spec/rails3/app/views/sorcery_mailer/send_unlock_token_email.text.erb
|
|
281
309
|
- spec/rails3/config.ru
|
|
282
310
|
- spec/rails3/config/application.rb
|
|
283
311
|
- spec/rails3/config/boot.rb
|
|
@@ -498,7 +526,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
498
526
|
requirements: []
|
|
499
527
|
|
|
500
528
|
rubyforge_project:
|
|
501
|
-
rubygems_version: 1.8.
|
|
529
|
+
rubygems_version: 1.8.21
|
|
502
530
|
signing_key:
|
|
503
531
|
specification_version: 3
|
|
504
532
|
summary: Magical authentication for Rails 3 applications
|