sorcery 0.7.12 → 0.7.13
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 +5 -4
- data/Gemfile.lock +8 -7
- data/README.rdoc +5 -1
- data/VERSION +1 -1
- data/lib/generators/sorcery/templates/initializer.rb +5 -13
- data/lib/sorcery/controller.rb +6 -3
- data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
- data/lib/sorcery/controller/submodules/external.rb +80 -14
- data/lib/sorcery/crypto_providers/bcrypt.rb +1 -0
- data/lib/sorcery/model/adapters/active_record.rb +9 -4
- data/lib/sorcery/model/adapters/mongo_mapper.rb +16 -14
- data/lib/sorcery/model/adapters/mongoid.rb +10 -4
- data/lib/sorcery/model/submodules/brute_force_protection.rb +8 -8
- data/lib/sorcery/model/submodules/remember_me.rb +4 -6
- data/lib/sorcery/model/submodules/reset_password.rb +4 -4
- data/lib/sorcery/railties/tasks.rake +2 -0
- data/sorcery.gemspec +9 -6
- data/spec/Gemfile +1 -1
- data/spec/Gemfile.lock +7 -10
- data/spec/rails3/Gemfile.lock +7 -9
- data/spec/rails3/app/controllers/application_controller.rb +14 -0
- data/spec/rails3/spec/controller_activity_logging_spec.rb +3 -0
- data/spec/rails3/spec/controller_oauth2_spec.rb +125 -21
- data/spec/rails3/spec/controller_oauth_spec.rb +102 -6
- data/spec/rails3/spec/controller_spec.rb +7 -0
- data/spec/rails3_mongo_mapper/Gemfile.lock +7 -10
- data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +14 -0
- data/spec/rails3_mongo_mapper/spec/controller_spec.rb +7 -0
- data/spec/rails3_mongoid/Gemfile.lock +7 -10
- data/spec/rails3_mongoid/app/controllers/application_controller.rb +14 -0
- data/spec/rails3_mongoid/spec/controller_spec.rb +7 -0
- data/spec/shared_examples/controller_oauth2_shared_examples.rb +20 -1
- data/spec/shared_examples/controller_oauth_shared_examples.rb +18 -0
- data/spec/sorcery_crypto_providers_spec.rb +9 -0
- metadata +139 -123
@@ -43,11 +43,28 @@ describe ApplicationController do
|
|
43
43
|
Authentication.delete_all
|
44
44
|
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
context "when callback_url begin with /" do
|
47
|
+
before do
|
48
|
+
sorcery_controller_external_property_set(:twitter, :callback_url, "/oauth/twitter/callback")
|
49
|
+
end
|
50
|
+
it "login_at redirects correctly" do
|
51
|
+
create_new_user
|
52
|
+
get :login_at_test
|
53
|
+
response.should be_a_redirect
|
54
|
+
response.should redirect_to("http://myapi.com/oauth/authorize?oauth_callback=http%3A%2F%2Ftest.host%2Foauth%2Ftwitter%2Fcallback&oauth_token=")
|
55
|
+
end
|
56
|
+
after do
|
57
|
+
sorcery_controller_external_property_set(:twitter, :callback_url, "http://blabla.com")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "when callback_url begin with http://" do
|
62
|
+
it "login_at redirects correctly" do
|
63
|
+
create_new_user
|
64
|
+
get :login_at_test
|
65
|
+
response.should be_a_redirect
|
66
|
+
response.should redirect_to("http://myapi.com/oauth/authorize?oauth_callback=http%3A%2F%2Fblabla.com&oauth_token=")
|
67
|
+
end
|
51
68
|
end
|
52
69
|
|
53
70
|
it "logins if user exists" do
|
@@ -107,4 +124,83 @@ describe ApplicationController do
|
|
107
124
|
ActionMailer::Base.deliveries.size.should == old_size
|
108
125
|
end
|
109
126
|
end
|
110
|
-
|
127
|
+
|
128
|
+
describe ApplicationController, "OAuth with user activation features" do
|
129
|
+
before(:all) do
|
130
|
+
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/external")
|
131
|
+
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/activity_logging")
|
132
|
+
sorcery_reload!([:activity_logging, :external])
|
133
|
+
end
|
134
|
+
|
135
|
+
after(:all) do
|
136
|
+
ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/external")
|
137
|
+
ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/activity_logging")
|
138
|
+
end
|
139
|
+
|
140
|
+
context "when twitter" do
|
141
|
+
before(:each) do
|
142
|
+
User.delete_all
|
143
|
+
Authentication.delete_all
|
144
|
+
sorcery_controller_property_set(:register_login_time, true)
|
145
|
+
stub_all_oauth_requests!
|
146
|
+
sorcery_model_property_set(:authentications_class, Authentication)
|
147
|
+
create_new_external_user(:twitter)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should register login time" do
|
151
|
+
now = Time.now.in_time_zone
|
152
|
+
get :test_login_from
|
153
|
+
User.last.last_login_at.should_not be_nil
|
154
|
+
User.last.last_login_at.to_s(:db).should >= now.to_s(:db)
|
155
|
+
User.last.last_login_at.to_s(:db).should <= (now+2).to_s(:db)
|
156
|
+
end
|
157
|
+
|
158
|
+
it "should not register login time if configured so" do
|
159
|
+
sorcery_controller_property_set(:register_login_time, false)
|
160
|
+
now = Time.now.in_time_zone
|
161
|
+
get :test_login_from
|
162
|
+
User.last.last_login_at.should be_nil
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe ApplicationController, "OAuth with session timeout features" do
|
168
|
+
before(:all) do
|
169
|
+
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/external")
|
170
|
+
sorcery_reload!([:session_timeout, :external])
|
171
|
+
end
|
172
|
+
|
173
|
+
after(:all) do
|
174
|
+
ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/external")
|
175
|
+
end
|
176
|
+
|
177
|
+
context "when twitter" do
|
178
|
+
before(:each) do
|
179
|
+
User.delete_all
|
180
|
+
Authentication.delete_all
|
181
|
+
sorcery_model_property_set(:authentications_class, Authentication)
|
182
|
+
sorcery_controller_property_set(:session_timeout,0.5)
|
183
|
+
stub_all_oauth_requests!
|
184
|
+
create_new_external_user(:twitter)
|
185
|
+
end
|
186
|
+
|
187
|
+
after(:each) do
|
188
|
+
Timecop.return
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should not reset session before session timeout" do
|
192
|
+
get :test_login_from
|
193
|
+
session[:user_id].should_not be_nil
|
194
|
+
flash[:notice].should == "Success!"
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should reset session after session timeout" do
|
198
|
+
get :test_login_from
|
199
|
+
Timecop.travel(Time.now.in_time_zone+0.6)
|
200
|
+
get :test_should_be_logged_in
|
201
|
+
session[:user_id].should be_nil
|
202
|
+
response.should be_a_redirect
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
@@ -141,6 +141,13 @@ describe ApplicationController do
|
|
141
141
|
response.should redirect_to("http://test.host/")
|
142
142
|
end
|
143
143
|
|
144
|
+
it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
|
145
|
+
[:post, :put, :delete].each do |m|
|
146
|
+
self.send(m, :some_action)
|
147
|
+
session[:return_to_url].should be_nil
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
144
151
|
it "on successful login the user should be redirected to the url he originally wanted" do
|
145
152
|
session[:return_to_url] = "http://test.host/some_action"
|
146
153
|
post :test_return_to, :username => 'gizmo', :password => 'secret'
|
@@ -1,12 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../
|
3
3
|
specs:
|
4
|
-
sorcery (0.7.
|
4
|
+
sorcery (0.7.13)
|
5
5
|
bcrypt-ruby (~> 3.0.0)
|
6
|
-
bundler (>= 1.1.0)
|
7
6
|
oauth (~> 0.4.4)
|
8
|
-
oauth2 (~> 0.
|
9
|
-
sorcery
|
7
|
+
oauth2 (~> 0.6.0)
|
10
8
|
|
11
9
|
GEM
|
12
10
|
remote: http://rubygems.org/
|
@@ -38,7 +36,6 @@ GEM
|
|
38
36
|
activemodel (= 3.0.3)
|
39
37
|
activesupport (= 3.0.3)
|
40
38
|
activesupport (3.0.3)
|
41
|
-
addressable (2.2.7)
|
42
39
|
archive-tar-minitar (0.5.2)
|
43
40
|
arel (2.0.10)
|
44
41
|
bcrypt-ruby (3.0.1)
|
@@ -51,10 +48,9 @@ GEM
|
|
51
48
|
diff-lcs (1.1.3)
|
52
49
|
erubis (2.6.6)
|
53
50
|
abstract (>= 1.0.0)
|
54
|
-
faraday (0.
|
55
|
-
addressable (~> 2.2)
|
51
|
+
faraday (0.8.1)
|
56
52
|
multipart-post (~> 1.1)
|
57
|
-
|
53
|
+
httpauth (0.1)
|
58
54
|
i18n (0.6.0)
|
59
55
|
linecache19 (0.5.12)
|
60
56
|
ruby_core_source (>= 0.1.4)
|
@@ -73,9 +69,10 @@ GEM
|
|
73
69
|
plucky (~> 0.4.0)
|
74
70
|
multi_json (1.1.0)
|
75
71
|
multipart-post (1.1.5)
|
76
|
-
oauth (0.4.
|
77
|
-
oauth2 (0.
|
72
|
+
oauth (0.4.6)
|
73
|
+
oauth2 (0.6.0)
|
78
74
|
faraday (~> 0.7)
|
75
|
+
httpauth (~> 0.1)
|
79
76
|
multi_json (~> 1.0)
|
80
77
|
plucky (0.4.4)
|
81
78
|
mongo (~> 1.5)
|
@@ -101,6 +101,20 @@ class ApplicationController < ActionController::Base
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
def test_create_from_provider_with_block
|
105
|
+
provider = params[:provider]
|
106
|
+
login_from(provider)
|
107
|
+
@user = create_from(provider) do |user|
|
108
|
+
# check uniqueness of username
|
109
|
+
User.where(:username => user.username).empty?
|
110
|
+
end
|
111
|
+
if @user
|
112
|
+
redirect_to "bla", :notice => "Success!"
|
113
|
+
else
|
114
|
+
redirect_to "blu", :alert => "Failed!"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
104
118
|
protected
|
105
119
|
|
106
120
|
|
@@ -141,6 +141,13 @@ describe ApplicationController do
|
|
141
141
|
response.should redirect_to("http://test.host/")
|
142
142
|
end
|
143
143
|
|
144
|
+
it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
|
145
|
+
[:post, :put, :delete].each do |m|
|
146
|
+
self.send(m, :some_action)
|
147
|
+
session[:return_to_url].should be_nil
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
144
151
|
it "on successful login the user should be redirected to the url he originally wanted" do
|
145
152
|
session[:return_to_url] = "http://test.host/some_action"
|
146
153
|
post :test_return_to, :username => 'gizmo', :password => 'secret'
|
@@ -1,12 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../
|
3
3
|
specs:
|
4
|
-
sorcery (0.7.
|
4
|
+
sorcery (0.7.13)
|
5
5
|
bcrypt-ruby (~> 3.0.0)
|
6
|
-
bundler (>= 1.1.0)
|
7
6
|
oauth (~> 0.4.4)
|
8
|
-
oauth2 (~> 0.
|
9
|
-
sorcery
|
7
|
+
oauth2 (~> 0.6.0)
|
10
8
|
|
11
9
|
GEM
|
12
10
|
remote: http://rubygems.org/
|
@@ -38,7 +36,6 @@ GEM
|
|
38
36
|
activemodel (= 3.0.3)
|
39
37
|
activesupport (= 3.0.3)
|
40
38
|
activesupport (3.0.3)
|
41
|
-
addressable (2.2.7)
|
42
39
|
archive-tar-minitar (0.5.2)
|
43
40
|
arel (2.0.10)
|
44
41
|
bcrypt-ruby (3.0.1)
|
@@ -50,10 +47,9 @@ GEM
|
|
50
47
|
diff-lcs (1.1.3)
|
51
48
|
erubis (2.6.6)
|
52
49
|
abstract (>= 1.0.0)
|
53
|
-
faraday (0.
|
54
|
-
addressable (~> 2.2)
|
50
|
+
faraday (0.8.1)
|
55
51
|
multipart-post (~> 1.1)
|
56
|
-
|
52
|
+
httpauth (0.1)
|
57
53
|
i18n (0.6.0)
|
58
54
|
linecache19 (0.5.12)
|
59
55
|
ruby_core_source (>= 0.1.4)
|
@@ -71,9 +67,10 @@ GEM
|
|
71
67
|
tzinfo (~> 0.3.22)
|
72
68
|
multi_json (1.1.0)
|
73
69
|
multipart-post (1.1.5)
|
74
|
-
oauth (0.4.
|
75
|
-
oauth2 (0.
|
70
|
+
oauth (0.4.6)
|
71
|
+
oauth2 (0.6.0)
|
76
72
|
faraday (~> 0.7)
|
73
|
+
httpauth (~> 0.1)
|
77
74
|
multi_json (~> 1.0)
|
78
75
|
polyglot (0.3.3)
|
79
76
|
rack (1.2.5)
|
@@ -106,6 +106,20 @@ class ApplicationController < ActionController::Base
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
+
def test_create_from_provider_with_block
|
110
|
+
provider = params[:provider]
|
111
|
+
login_from(provider)
|
112
|
+
@user = create_from(provider) do |user|
|
113
|
+
# check uniqueness of username
|
114
|
+
User.where(:username => user.username).empty?
|
115
|
+
end
|
116
|
+
if @user
|
117
|
+
redirect_to "bla", :notice => "Success!"
|
118
|
+
else
|
119
|
+
redirect_to "blu", :alert => "Failed!"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
109
123
|
protected
|
110
124
|
|
111
125
|
|
@@ -152,6 +152,13 @@ describe ApplicationController do
|
|
152
152
|
response.should redirect_to("http://test.host/")
|
153
153
|
end
|
154
154
|
|
155
|
+
it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
|
156
|
+
[:post, :put, :delete].each do |m|
|
157
|
+
self.send(m, :some_action)
|
158
|
+
session[:return_to_url].should be_nil
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
155
162
|
it "on successful login the user should be redirected to the url he originally wanted" do
|
156
163
|
session[:return_to_url] = "http://test.host/some_action"
|
157
164
|
post :test_return_to, :username => 'gizmo', :password => 'secret'
|
@@ -32,6 +32,25 @@ shared_examples_for "oauth2_controller" do
|
|
32
32
|
end.should change(User, :count).by(1)
|
33
33
|
User.first.username.should == "Noam Ben Ari"
|
34
34
|
User.first.created_at.should_not be_nil
|
35
|
-
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "with a block" do
|
38
|
+
|
39
|
+
before(:each) do
|
40
|
+
user = User.new(:username => 'Noam Ben Ari')
|
41
|
+
user.save!(:validate => false)
|
42
|
+
user.authentications.create(:provider => 'twitter', :uid => '456')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should not create user" do
|
46
|
+
sorcery_model_property_set(:authentications_class, Authentication)
|
47
|
+
sorcery_controller_external_property_set(:facebook, :user_info_mapping, {:username => "name"})
|
48
|
+
lambda do
|
49
|
+
# test_create_from_provider_with_block in controller will check for uniqueness of username
|
50
|
+
get :test_create_from_provider_with_block, :provider => "facebook"
|
51
|
+
end.should_not change(User, :count)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
36
55
|
end
|
37
56
|
end
|
@@ -33,5 +33,23 @@ shared_examples_for "oauth_controller" do
|
|
33
33
|
User.first.username.should == "coming soon to sorcery gem: twitter and facebook authentication support."
|
34
34
|
User.first.created_at.should_not be_nil
|
35
35
|
end
|
36
|
+
|
37
|
+
describe "with a block" do
|
38
|
+
|
39
|
+
before(:each) do
|
40
|
+
user = User.new(:username => 'nbenari')
|
41
|
+
user.save!(:validate => false)
|
42
|
+
user.authentications.create(:provider => 'github', :uid => '456')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should not create user" do
|
46
|
+
sorcery_model_property_set(:authentications_class, Authentication)
|
47
|
+
sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "screen_name"})
|
48
|
+
lambda do
|
49
|
+
get :test_create_from_provider_with_block, :provider => "twitter"
|
50
|
+
end.should_not change(User, :count)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
36
54
|
end
|
37
55
|
end
|
@@ -181,6 +181,15 @@ describe "Crypto Providers wrappers" do
|
|
181
181
|
it "matches? returns false when no match" do
|
182
182
|
Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Some Dude').should be_false
|
183
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
|
184
193
|
|
185
194
|
end
|
186
195
|
|
metadata
CHANGED
@@ -1,212 +1,225 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sorcery
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.12
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.7.13
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Noam Ben Ari
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
|
13
|
+
date: 2012-07-22 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
15
16
|
name: oauth
|
16
|
-
requirement: &
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
18
|
none: false
|
18
|
-
requirements:
|
19
|
+
requirements:
|
19
20
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
+
- !ruby/object:Gem::Version
|
21
22
|
version: 0.4.4
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
26
27
|
name: oauth2
|
27
|
-
requirement: &
|
28
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
29
|
none: false
|
29
|
-
requirements:
|
30
|
+
requirements:
|
30
31
|
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.6.0
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
37
38
|
name: bcrypt-ruby
|
38
|
-
requirement: &
|
39
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
|
-
requirements:
|
41
|
+
requirements:
|
41
42
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
43
44
|
version: 3.0.0
|
44
45
|
type: :runtime
|
45
46
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: abstract
|
50
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.0.0
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
48
60
|
name: rails
|
49
|
-
requirement: &
|
61
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
50
62
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
54
66
|
version: 3.0.0
|
55
67
|
type: :development
|
56
68
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
59
71
|
name: json
|
60
|
-
requirement: &
|
72
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
61
73
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
65
77
|
version: 1.5.1
|
66
78
|
type: :development
|
67
79
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
70
82
|
name: rspec
|
71
|
-
requirement: &
|
83
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
72
84
|
none: false
|
73
|
-
requirements:
|
85
|
+
requirements:
|
74
86
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
87
|
+
- !ruby/object:Gem::Version
|
76
88
|
version: 2.5.0
|
77
89
|
type: :development
|
78
90
|
prerelease: false
|
79
|
-
version_requirements: *
|
80
|
-
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
81
93
|
name: rspec-rails
|
82
|
-
requirement: &
|
94
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
83
95
|
none: false
|
84
|
-
requirements:
|
96
|
+
requirements:
|
85
97
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
98
|
+
- !ruby/object:Gem::Version
|
87
99
|
version: 2.5.0
|
88
100
|
type: :development
|
89
101
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
-
- !ruby/object:Gem::Dependency
|
102
|
+
version_requirements: *id008
|
103
|
+
- !ruby/object:Gem::Dependency
|
92
104
|
name: ruby-debug19
|
93
|
-
requirement: &
|
105
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
94
106
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version:
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: "0"
|
99
111
|
type: :development
|
100
112
|
prerelease: false
|
101
|
-
version_requirements: *
|
102
|
-
- !ruby/object:Gem::Dependency
|
113
|
+
version_requirements: *id009
|
114
|
+
- !ruby/object:Gem::Dependency
|
103
115
|
name: sqlite3-ruby
|
104
|
-
requirement: &
|
116
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
105
117
|
none: false
|
106
|
-
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version:
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: "0"
|
110
122
|
type: :development
|
111
123
|
prerelease: false
|
112
|
-
version_requirements: *
|
113
|
-
- !ruby/object:Gem::Dependency
|
124
|
+
version_requirements: *id010
|
125
|
+
- !ruby/object:Gem::Dependency
|
114
126
|
name: yard
|
115
|
-
requirement: &
|
127
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
116
128
|
none: false
|
117
|
-
requirements:
|
129
|
+
requirements:
|
118
130
|
- - ~>
|
119
|
-
- !ruby/object:Gem::Version
|
131
|
+
- !ruby/object:Gem::Version
|
120
132
|
version: 0.6.0
|
121
133
|
type: :development
|
122
134
|
prerelease: false
|
123
|
-
version_requirements: *
|
124
|
-
- !ruby/object:Gem::Dependency
|
135
|
+
version_requirements: *id011
|
136
|
+
- !ruby/object:Gem::Dependency
|
125
137
|
name: bundler
|
126
|
-
requirement: &
|
138
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
127
139
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
131
143
|
version: 1.1.0
|
132
144
|
type: :development
|
133
145
|
prerelease: false
|
134
|
-
version_requirements: *
|
135
|
-
- !ruby/object:Gem::Dependency
|
146
|
+
version_requirements: *id012
|
147
|
+
- !ruby/object:Gem::Dependency
|
136
148
|
name: jeweler
|
137
|
-
requirement: &
|
149
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
138
150
|
none: false
|
139
|
-
requirements:
|
151
|
+
requirements:
|
140
152
|
- - ~>
|
141
|
-
- !ruby/object:Gem::Version
|
153
|
+
- !ruby/object:Gem::Version
|
142
154
|
version: 1.8.3
|
143
155
|
type: :development
|
144
156
|
prerelease: false
|
145
|
-
version_requirements: *
|
146
|
-
- !ruby/object:Gem::Dependency
|
157
|
+
version_requirements: *id013
|
158
|
+
- !ruby/object:Gem::Dependency
|
147
159
|
name: simplecov
|
148
|
-
requirement: &
|
160
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
149
161
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
153
165
|
version: 0.3.8
|
154
166
|
type: :development
|
155
167
|
prerelease: false
|
156
|
-
version_requirements: *
|
157
|
-
- !ruby/object:Gem::Dependency
|
168
|
+
version_requirements: *id014
|
169
|
+
- !ruby/object:Gem::Dependency
|
158
170
|
name: timecop
|
159
|
-
requirement: &
|
171
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
160
172
|
none: false
|
161
|
-
requirements:
|
162
|
-
- -
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version:
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: "0"
|
165
177
|
type: :development
|
166
178
|
prerelease: false
|
167
|
-
version_requirements: *
|
168
|
-
- !ruby/object:Gem::Dependency
|
179
|
+
version_requirements: *id015
|
180
|
+
- !ruby/object:Gem::Dependency
|
169
181
|
name: capybara
|
170
|
-
requirement: &
|
182
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
171
183
|
none: false
|
172
|
-
requirements:
|
173
|
-
- -
|
174
|
-
- !ruby/object:Gem::Version
|
175
|
-
version:
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: "0"
|
176
188
|
type: :development
|
177
189
|
prerelease: false
|
178
|
-
version_requirements: *
|
179
|
-
- !ruby/object:Gem::Dependency
|
190
|
+
version_requirements: *id016
|
191
|
+
- !ruby/object:Gem::Dependency
|
180
192
|
name: mongo_mapper
|
181
|
-
requirement: &
|
193
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
182
194
|
none: false
|
183
|
-
requirements:
|
184
|
-
- -
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version:
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: "0"
|
187
199
|
type: :development
|
188
200
|
prerelease: false
|
189
|
-
version_requirements: *
|
190
|
-
- !ruby/object:Gem::Dependency
|
201
|
+
version_requirements: *id017
|
202
|
+
- !ruby/object:Gem::Dependency
|
191
203
|
name: mongoid
|
192
|
-
requirement: &
|
204
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
193
205
|
none: false
|
194
|
-
requirements:
|
206
|
+
requirements:
|
195
207
|
- - ~>
|
196
|
-
- !ruby/object:Gem::Version
|
208
|
+
- !ruby/object:Gem::Version
|
197
209
|
version: 2.4.4
|
198
210
|
type: :development
|
199
211
|
prerelease: false
|
200
|
-
version_requirements: *
|
201
|
-
description: Provides common authentication needs such as signing in/out, activating
|
202
|
-
by email and resetting password.
|
212
|
+
version_requirements: *id018
|
213
|
+
description: Provides common authentication needs such as signing in/out, activating by email and resetting password.
|
203
214
|
email: nbenari@gmail.com
|
204
215
|
executables: []
|
216
|
+
|
205
217
|
extensions: []
|
206
|
-
|
218
|
+
|
219
|
+
extra_rdoc_files:
|
207
220
|
- LICENSE.txt
|
208
221
|
- README.rdoc
|
209
|
-
files:
|
222
|
+
files:
|
210
223
|
- .document
|
211
224
|
- .rspec
|
212
225
|
- .travis.yml
|
@@ -489,28 +502,31 @@ files:
|
|
489
502
|
- spec/spec.opts
|
490
503
|
- spec/spec_helper.rb
|
491
504
|
homepage: http://github.com/NoamB/sorcery
|
492
|
-
licenses:
|
505
|
+
licenses:
|
493
506
|
- MIT
|
494
507
|
post_install_message:
|
495
508
|
rdoc_options: []
|
496
|
-
|
509
|
+
|
510
|
+
require_paths:
|
497
511
|
- lib
|
498
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
512
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
499
513
|
none: false
|
500
|
-
requirements:
|
501
|
-
- -
|
502
|
-
- !ruby/object:Gem::Version
|
503
|
-
version:
|
504
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
514
|
+
requirements:
|
515
|
+
- - ">="
|
516
|
+
- !ruby/object:Gem::Version
|
517
|
+
version: "0"
|
518
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
505
519
|
none: false
|
506
|
-
requirements:
|
507
|
-
- -
|
508
|
-
- !ruby/object:Gem::Version
|
509
|
-
version:
|
520
|
+
requirements:
|
521
|
+
- - ">="
|
522
|
+
- !ruby/object:Gem::Version
|
523
|
+
version: "0"
|
510
524
|
requirements: []
|
525
|
+
|
511
526
|
rubyforge_project:
|
512
|
-
rubygems_version: 1.8.
|
527
|
+
rubygems_version: 1.8.21
|
513
528
|
signing_key:
|
514
529
|
specification_version: 3
|
515
530
|
summary: Magical authentication for Rails 3 applications
|
516
531
|
test_files: []
|
532
|
+
|