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.
Files changed (70) hide show
  1. data/.travis.yml +3 -0
  2. data/Gemfile +9 -4
  3. data/Gemfile.lock +103 -62
  4. data/README.rdoc +33 -8
  5. data/Rakefile +6 -7
  6. data/VERSION +1 -1
  7. data/lib/generators/sorcery/install_generator.rb +15 -10
  8. data/lib/generators/sorcery/templates/initializer.rb +343 -125
  9. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +2 -0
  10. data/lib/generators/sorcery/templates/migration/reset_password.rb +1 -1
  11. data/lib/sorcery/controller/submodules/activity_logging.rb +3 -3
  12. data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
  13. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +19 -19
  14. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +20 -5
  15. data/lib/sorcery/controller/submodules/external/providers/github.rb +15 -4
  16. data/lib/sorcery/controller/submodules/external/providers/google.rb +90 -0
  17. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +101 -0
  18. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +91 -0
  19. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +2 -1
  20. data/lib/sorcery/controller/submodules/external/providers/vkontakte.rb +94 -0
  21. data/lib/sorcery/controller/submodules/external.rb +89 -15
  22. data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -1
  23. data/lib/sorcery/controller/submodules/remember_me.rb +11 -2
  24. data/lib/sorcery/controller.rb +14 -6
  25. data/lib/sorcery/crypto_providers/bcrypt.rb +1 -0
  26. data/lib/sorcery/model/adapters/active_record.rb +21 -1
  27. data/lib/sorcery/model/adapters/mongo_mapper.rb +22 -15
  28. data/lib/sorcery/model/adapters/mongoid.rb +20 -3
  29. data/lib/sorcery/model/submodules/activity_logging.rb +4 -4
  30. data/lib/sorcery/model/submodules/brute_force_protection.rb +46 -15
  31. data/lib/sorcery/model/submodules/remember_me.rb +4 -6
  32. data/lib/sorcery/model/submodules/reset_password.rb +18 -12
  33. data/lib/sorcery/model/submodules/user_activation.rb +15 -8
  34. data/lib/sorcery/model.rb +57 -43
  35. data/lib/sorcery/railties/tasks.rake +2 -0
  36. data/lib/sorcery.rb +5 -1
  37. data/sorcery.gemspec +33 -21
  38. data/spec/Gemfile +1 -1
  39. data/spec/Gemfile.lock +22 -21
  40. data/spec/README.md +8 -8
  41. data/spec/rails3/Gemfile +3 -3
  42. data/spec/rails3/Gemfile.lock +55 -33
  43. data/spec/rails3/app/controllers/application_controller.rb +85 -2
  44. data/spec/rails3/app/mailers/sorcery_mailer.rb +7 -0
  45. data/spec/rails3/app/views/sorcery_mailer/send_unlock_token_email.text.erb +1 -0
  46. data/spec/rails3/config/environments/in_memory.rb +35 -0
  47. data/spec/rails3/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +2 -0
  48. data/spec/rails3/spec/controller_activity_logging_spec.rb +10 -0
  49. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +23 -1
  50. data/spec/rails3/spec/controller_oauth2_spec.rb +260 -22
  51. data/spec/rails3/spec/controller_oauth_spec.rb +111 -6
  52. data/spec/rails3/spec/controller_spec.rb +37 -2
  53. data/spec/rails3/spec/integration_spec.rb +15 -15
  54. data/spec/rails3/spec/spec_helper.rb +1 -1
  55. data/spec/rails3_mongo_mapper/Gemfile +2 -1
  56. data/spec/rails3_mongo_mapper/Gemfile.lock +40 -42
  57. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +14 -0
  58. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +41 -1
  59. data/spec/rails3_mongoid/Gemfile +1 -0
  60. data/spec/rails3_mongoid/Gemfile.lock +30 -27
  61. data/spec/rails3_mongoid/app/controllers/application_controller.rb +19 -0
  62. data/spec/rails3_mongoid/config/mongoid.yml +1 -1
  63. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +18 -11
  64. data/spec/rails3_mongoid/spec/controller_spec.rb +41 -1
  65. data/spec/shared_examples/controller_oauth2_shared_examples.rb +20 -1
  66. data/spec/shared_examples/controller_oauth_shared_examples.rb +18 -0
  67. data/spec/shared_examples/user_activation_shared_examples.rb +71 -41
  68. data/spec/shared_examples/user_reset_password_shared_examples.rb +80 -27
  69. data/spec/sorcery_crypto_providers_spec.rb +14 -1
  70. 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 on activation, throw exception!" do
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
- it "should send the user an activation email" do
69
- old_size = ActionMailer::Base.deliveries.size
70
- create_new_user
71
- ActionMailer::Base.deliveries.size.should == old_size + 1
72
- end
73
-
74
- it "subsequent saves do not send activation email" do
75
- old_size = ActionMailer::Base.deliveries.size
76
- @user.username = "Shauli"
77
- @user.save!
78
- ActionMailer::Base.deliveries.size.should == old_size
79
- end
80
-
81
- it "should send the user an activation success email on successful activation" do
82
- old_size = ActionMailer::Base.deliveries.size
83
- @user.activate!
84
- ActionMailer::Base.deliveries.size.should == old_size + 1
85
- end
86
-
87
- it "subsequent saves do not send activation success email" do
88
- @user.activate!
89
- old_size = ActionMailer::Base.deliveries.size
90
- @user.username = "Shauli"
91
- @user.save!
92
- ActionMailer::Base.deliveries.size.should == old_size
93
- end
94
-
95
- it "activation needed email is optional" do
96
- sorcery_model_property_set(:activation_needed_email_method_name, nil)
97
- old_size = ActionMailer::Base.deliveries.size
98
- create_new_user
99
- ActionMailer::Base.deliveries.size.should == old_size
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
- it "activation success email is optional" do
103
- sorcery_model_property_set(:activation_success_email_method_name, nil)
104
- old_size = ActionMailer::Base.deliveries.size
105
- @user.activate!
106
- ActionMailer::Base.deliveries.size.should == old_size
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
- it "should send an email on reset" do
129
- create_new_user
130
- old_size = ActionMailer::Base.deliveries.size
131
- @user.deliver_reset_password_instructions!
132
- ActionMailer::Base.deliveries.size.should == old_size + 1
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 not send an email if time between emails has not passed since last email" do
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
- ActionMailer::Base.deliveries.size.should == old_size + 2
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.7.4
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: 2011-10-29 00:00:00 Z
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.4.1
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: rails
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: :development
45
+ type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: *id003
48
48
  - !ruby/object:Gem::Dependency
49
- name: json
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.5.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: rspec
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: 2.5.0
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: rspec-rails
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: 2.5.0
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: ruby-debug19
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: "0"
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: sqlite3-ruby
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: "0"
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: yard
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.6.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: bundler
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: 1.0.0
121
+ version: "0"
122
122
  type: :development
123
123
  prerelease: false
124
124
  version_requirements: *id010
125
125
  - !ruby/object:Gem::Dependency
126
- name: jeweler
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: 1.5.2
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: simplecov
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: 0.3.8
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: timecop
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: "0"
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: bcrypt-ruby
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.0.0
166
- type: :runtime
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: oauth
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.4.4
177
- type: :runtime
176
+ version: "0"
177
+ type: :development
178
178
  prerelease: false
179
179
  version_requirements: *id015
180
180
  - !ruby/object:Gem::Dependency
181
- name: oauth2
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.4.1
188
- type: :runtime
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.11
529
+ rubygems_version: 1.8.21
502
530
  signing_key:
503
531
  specification_version: 3
504
532
  summary: Magical authentication for Rails 3 applications