sorcery 0.1.0 → 0.1.1

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.

Potentially problematic release.


This version of sorcery might be problematic. Click here for more details.

data/Rakefile CHANGED
@@ -22,6 +22,7 @@ Jeweler::Tasks.new do |gem|
22
22
  # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
23
23
  # gem.add_runtime_dependency 'jabber4r', '> 0.1'
24
24
  # gem.add_development_dependency 'rspec', '> 1.2.3'
25
+ # gem.add_runtime_dependency 'bcrypt-ruby', '~> 2.1.4'
25
26
  end
26
27
  Jeweler::RubygemsDotOrgTasks.new
27
28
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -49,7 +49,7 @@ module Sorcery
49
49
  @cost ||= 10
50
50
  end
51
51
  attr_writer :cost
52
- alias :stretches= :cost=
52
+ #alias :stretches= :cost=
53
53
 
54
54
  # Creates a BCrypt hash for the password passed.
55
55
  def encrypt(*tokens)
data/lib/sorcery/model.rb CHANGED
@@ -52,10 +52,16 @@ module Sorcery
52
52
  def authenticate(*credentials)
53
53
  raise ArgumentError, "at least 2 arguments required" if credentials.size < 2
54
54
  user = where("#{@sorcery_config.username_attribute_name} = ?", credentials[0]).first
55
- salt = user.send(@sorcery_config.salt_attribute_name) if user && !@sorcery_config.salt_attribute_name.nil?
56
- user if user && @sorcery_config.before_authenticate.all? {|c| user.send(c)} && (user.send(@sorcery_config.crypted_password_attribute_name)) == encrypt(credentials[1],salt)
55
+ _salt = user.send(@sorcery_config.salt_attribute_name) if user && !@sorcery_config.salt_attribute_name.nil? && !@sorcery_config.encryption_provider.nil?
56
+ user if user && @sorcery_config.before_authenticate.all? {|c| user.send(c)} && credentials_match?(user.send(@sorcery_config.crypted_password_attribute_name),credentials[1],_salt)
57
+ end
58
+
59
+ def credentials_match?(crypted, *tokens)
60
+ return crypted == tokens.join if @sorcery_config.encryption_provider.nil?
61
+ @sorcery_config.encryption_provider.matches?(crypted, *tokens)
57
62
  end
58
63
 
64
+ # encrypt tokens using current encryption_provider.
59
65
  def encrypt(*tokens)
60
66
  return tokens.first if @sorcery_config.encryption_provider.nil?
61
67
 
@@ -78,8 +84,8 @@ module Sorcery
78
84
  # encrypts password with salt and save it.
79
85
  def encrypt_password
80
86
  config = sorcery_config
81
- self.send(:"#{config.salt_attribute_name}=", generate_random_code) if !config.salt_attribute_name.nil?
82
- self.send(:"#{config.crypted_password_attribute_name}=", self.class.encrypt(self.send(config.password_attribute_name),salt))
87
+ new_salt = self.send(:"#{config.salt_attribute_name}=", generate_random_code) if !config.salt_attribute_name.nil?
88
+ self.send(:"#{config.crypted_password_attribute_name}=", self.class.encrypt(self.send(config.password_attribute_name),new_salt))
83
89
  end
84
90
 
85
91
  def clear_virtual_password
@@ -131,7 +137,7 @@ module Sorcery
131
137
  :@password_attribute_name => :password,
132
138
  :@email_attribute_name => :email,
133
139
  :@crypted_password_attribute_name => :crypted_password,
134
- :@encryption_algorithm => :sha256,
140
+ :@encryption_algorithm => :bcrypt,
135
141
  :@encryption_provider => CryptoProviders::BCrypt,
136
142
  :@custom_encryption_provider => nil,
137
143
  :@encryption_key => nil,
data/sorcery.gemspec ADDED
@@ -0,0 +1,206 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{sorcery}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Noam Ben Ari"]
12
+ s.date = %q{2011-02-04}
13
+ s.description = %q{Provides common authentication needs such as signing in/out, activating by email and resetting password.}
14
+ s.email = %q{nbenari@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "features/support/env.rb",
29
+ "lib/sorcery.rb",
30
+ "lib/sorcery/controller.rb",
31
+ "lib/sorcery/controller/submodules/brute_force_protection.rb",
32
+ "lib/sorcery/controller/submodules/remember_me.rb",
33
+ "lib/sorcery/controller/submodules/session_timeout.rb",
34
+ "lib/sorcery/crypto_providers/aes256.rb",
35
+ "lib/sorcery/crypto_providers/bcrypt.rb",
36
+ "lib/sorcery/crypto_providers/md5.rb",
37
+ "lib/sorcery/crypto_providers/sha1.rb",
38
+ "lib/sorcery/crypto_providers/sha256.rb",
39
+ "lib/sorcery/crypto_providers/sha512.rb",
40
+ "lib/sorcery/engine.rb",
41
+ "lib/sorcery/model.rb",
42
+ "lib/sorcery/model/submodules/password_reset.rb",
43
+ "lib/sorcery/model/submodules/remember_me.rb",
44
+ "lib/sorcery/model/submodules/user_activation.rb",
45
+ "sorcery.gemspec",
46
+ "spec/Gemfile",
47
+ "spec/Gemfile.lock",
48
+ "spec/Rakefile",
49
+ "spec/rails3/.rspec",
50
+ "spec/rails3/Gemfile",
51
+ "spec/rails3/Gemfile.lock",
52
+ "spec/rails3/Rakefile",
53
+ "spec/rails3/app_root/.gitignore",
54
+ "spec/rails3/app_root/README",
55
+ "spec/rails3/app_root/Rakefile.unused",
56
+ "spec/rails3/app_root/app/controllers/application_controller.rb",
57
+ "spec/rails3/app_root/app/helpers/application_helper.rb",
58
+ "spec/rails3/app_root/app/mailers/sorcery_mailer.rb",
59
+ "spec/rails3/app_root/app/models/user.rb",
60
+ "spec/rails3/app_root/app/views/layouts/application.html.erb",
61
+ "spec/rails3/app_root/app/views/sorcery_mailer/activation_email.html.erb",
62
+ "spec/rails3/app_root/app/views/sorcery_mailer/activation_email.text.erb",
63
+ "spec/rails3/app_root/app/views/sorcery_mailer/activation_success_email.html.erb",
64
+ "spec/rails3/app_root/app/views/sorcery_mailer/activation_success_email.text.erb",
65
+ "spec/rails3/app_root/app/views/sorcery_mailer/reset_password_email.html.erb",
66
+ "spec/rails3/app_root/app/views/sorcery_mailer/reset_password_email.text.erb",
67
+ "spec/rails3/app_root/config.ru",
68
+ "spec/rails3/app_root/config/application.rb",
69
+ "spec/rails3/app_root/config/boot.rb",
70
+ "spec/rails3/app_root/config/database.yml",
71
+ "spec/rails3/app_root/config/environment.rb",
72
+ "spec/rails3/app_root/config/environments/development.rb",
73
+ "spec/rails3/app_root/config/environments/in_memory.rb",
74
+ "spec/rails3/app_root/config/environments/production.rb",
75
+ "spec/rails3/app_root/config/environments/test.rb",
76
+ "spec/rails3/app_root/config/initializers/backtrace_silencers.rb",
77
+ "spec/rails3/app_root/config/initializers/inflections.rb",
78
+ "spec/rails3/app_root/config/initializers/mime_types.rb",
79
+ "spec/rails3/app_root/config/initializers/secret_token.rb",
80
+ "spec/rails3/app_root/config/initializers/session_store.rb",
81
+ "spec/rails3/app_root/config/locales/en.yml",
82
+ "spec/rails3/app_root/config/routes.rb",
83
+ "spec/rails3/app_root/db/migrate/activation/20101224223622_add_activation_to_users.rb",
84
+ "spec/rails3/app_root/db/migrate/core/20101224223620_create_users.rb",
85
+ "spec/rails3/app_root/db/migrate/password_reset/20101224223622_add_password_reset_to_users.rb",
86
+ "spec/rails3/app_root/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb",
87
+ "spec/rails3/app_root/db/schema.rb",
88
+ "spec/rails3/app_root/db/seeds.rb",
89
+ "spec/rails3/app_root/lib/tasks/.gitkeep",
90
+ "spec/rails3/app_root/public/404.html",
91
+ "spec/rails3/app_root/public/422.html",
92
+ "spec/rails3/app_root/public/500.html",
93
+ "spec/rails3/app_root/public/favicon.ico",
94
+ "spec/rails3/app_root/public/images/rails.png",
95
+ "spec/rails3/app_root/public/index.html",
96
+ "spec/rails3/app_root/public/javascripts/application.js",
97
+ "spec/rails3/app_root/public/javascripts/controls.js",
98
+ "spec/rails3/app_root/public/javascripts/dragdrop.js",
99
+ "spec/rails3/app_root/public/javascripts/effects.js",
100
+ "spec/rails3/app_root/public/javascripts/prototype.js",
101
+ "spec/rails3/app_root/public/javascripts/rails.js",
102
+ "spec/rails3/app_root/public/robots.txt",
103
+ "spec/rails3/app_root/public/stylesheets/.gitkeep",
104
+ "spec/rails3/app_root/script/rails",
105
+ "spec/rails3/app_root/test/fixtures/users.yml",
106
+ "spec/rails3/app_root/test/performance/browsing_test.rb",
107
+ "spec/rails3/app_root/test/test_helper.rb",
108
+ "spec/rails3/app_root/test/unit/user_test.rb",
109
+ "spec/rails3/app_root/vendor/plugins/.gitkeep",
110
+ "spec/rails3/controller_brute_force_protection_spec.rb",
111
+ "spec/rails3/controller_remember_me_spec.rb",
112
+ "spec/rails3/controller_session_timeout_spec.rb",
113
+ "spec/rails3/controller_spec.rb",
114
+ "spec/rails3/spec_helper.rb",
115
+ "spec/rails3/user_activation_spec.rb",
116
+ "spec/rails3/user_password_reset_spec.rb",
117
+ "spec/rails3/user_remember_me_spec.rb",
118
+ "spec/rails3/user_spec.rb",
119
+ "spec/sorcery_crypto_providers_spec.rb",
120
+ "spec/spec_helper.rb"
121
+ ]
122
+ s.homepage = %q{http://github.com/NoamB/sorcery}
123
+ s.licenses = ["MIT"]
124
+ s.require_paths = ["lib"]
125
+ s.rubygems_version = %q{1.5.0}
126
+ s.summary = %q{Magical authentication for Rails 3 applications}
127
+ s.test_files = [
128
+ "spec/rails3/app_root/app/controllers/application_controller.rb",
129
+ "spec/rails3/app_root/app/helpers/application_helper.rb",
130
+ "spec/rails3/app_root/app/mailers/sorcery_mailer.rb",
131
+ "spec/rails3/app_root/app/models/user.rb",
132
+ "spec/rails3/app_root/config/application.rb",
133
+ "spec/rails3/app_root/config/boot.rb",
134
+ "spec/rails3/app_root/config/environment.rb",
135
+ "spec/rails3/app_root/config/environments/development.rb",
136
+ "spec/rails3/app_root/config/environments/in_memory.rb",
137
+ "spec/rails3/app_root/config/environments/production.rb",
138
+ "spec/rails3/app_root/config/environments/test.rb",
139
+ "spec/rails3/app_root/config/initializers/backtrace_silencers.rb",
140
+ "spec/rails3/app_root/config/initializers/inflections.rb",
141
+ "spec/rails3/app_root/config/initializers/mime_types.rb",
142
+ "spec/rails3/app_root/config/initializers/secret_token.rb",
143
+ "spec/rails3/app_root/config/initializers/session_store.rb",
144
+ "spec/rails3/app_root/config/routes.rb",
145
+ "spec/rails3/app_root/db/migrate/activation/20101224223622_add_activation_to_users.rb",
146
+ "spec/rails3/app_root/db/migrate/core/20101224223620_create_users.rb",
147
+ "spec/rails3/app_root/db/migrate/password_reset/20101224223622_add_password_reset_to_users.rb",
148
+ "spec/rails3/app_root/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb",
149
+ "spec/rails3/app_root/db/schema.rb",
150
+ "spec/rails3/app_root/db/seeds.rb",
151
+ "spec/rails3/app_root/test/performance/browsing_test.rb",
152
+ "spec/rails3/app_root/test/test_helper.rb",
153
+ "spec/rails3/app_root/test/unit/user_test.rb",
154
+ "spec/rails3/controller_brute_force_protection_spec.rb",
155
+ "spec/rails3/controller_remember_me_spec.rb",
156
+ "spec/rails3/controller_session_timeout_spec.rb",
157
+ "spec/rails3/controller_spec.rb",
158
+ "spec/rails3/spec_helper.rb",
159
+ "spec/rails3/user_activation_spec.rb",
160
+ "spec/rails3/user_password_reset_spec.rb",
161
+ "spec/rails3/user_remember_me_spec.rb",
162
+ "spec/rails3/user_spec.rb",
163
+ "spec/sorcery_crypto_providers_spec.rb",
164
+ "spec/spec_helper.rb"
165
+ ]
166
+
167
+ if s.respond_to? :specification_version then
168
+ s.specification_version = 3
169
+
170
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
171
+ s.add_development_dependency(%q<rails>, ["= 3.0.3"])
172
+ s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
173
+ s.add_development_dependency(%q<rspec-rails>, [">= 0"])
174
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
175
+ s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
176
+ s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
177
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
178
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
179
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
180
+ s.add_development_dependency(%q<simplecov>, [">= 0.3.8"])
181
+ else
182
+ s.add_dependency(%q<rails>, ["= 3.0.3"])
183
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
184
+ s.add_dependency(%q<rspec-rails>, [">= 0"])
185
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
186
+ s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
187
+ s.add_dependency(%q<yard>, ["~> 0.6.0"])
188
+ s.add_dependency(%q<cucumber>, [">= 0"])
189
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
190
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
191
+ s.add_dependency(%q<simplecov>, [">= 0.3.8"])
192
+ end
193
+ else
194
+ s.add_dependency(%q<rails>, ["= 3.0.3"])
195
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
196
+ s.add_dependency(%q<rspec-rails>, [">= 0"])
197
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
198
+ s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
199
+ s.add_dependency(%q<yard>, ["~> 0.6.0"])
200
+ s.add_dependency(%q<cucumber>, [">= 0"])
201
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
202
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
203
+ s.add_dependency(%q<simplecov>, [">= 0.3.8"])
204
+ end
205
+ end
206
+
data/spec/rails3/Gemfile CHANGED
@@ -3,7 +3,8 @@ source 'http://rubygems.org'
3
3
  gem 'rails', '3.0.3'
4
4
  gem 'sqlite3-ruby', :require => 'sqlite3'
5
5
  gem "sorcery", '0.1.0', :path => '../../../'
6
-
6
+ gem 'bcrypt-ruby', '~> 2.1.4', :require => 'bcrypt'
7
+
7
8
  group :development do
8
9
  gem 'rspec'
9
10
  gem 'rspec-rails'
@@ -35,6 +35,7 @@ GEM
35
35
  activesupport (3.0.3)
36
36
  archive-tar-minitar (0.5.2)
37
37
  arel (2.0.6)
38
+ bcrypt-ruby (2.1.4)
38
39
  builder (2.1.2)
39
40
  columnize (0.3.2)
40
41
  diff-lcs (1.1.2)
@@ -105,6 +106,7 @@ PLATFORMS
105
106
  ruby
106
107
 
107
108
  DEPENDENCIES
109
+ bcrypt-ruby (~> 2.1.4)
108
110
  rails (= 3.0.3)
109
111
  rspec
110
112
  rspec-rails
@@ -93,7 +93,7 @@ describe "User with no submodules (core)" do
93
93
  # ----------------- PLUGIN ACTIVATED -----------------------
94
94
  describe User, "when activated with sorcery" do
95
95
  before(:all) do
96
- plugin_model_configure
96
+ plugin_model_configure()
97
97
  end
98
98
 
99
99
  before(:each) do
@@ -137,7 +137,7 @@ describe "User with no submodules (core)" do
137
137
 
138
138
  it "should encrypt password when a new user is saved" do
139
139
  create_new_user
140
- @user.send(User.sorcery_config.crypted_password_attribute_name).should == User.encrypt('secret',@user.salt)
140
+ User.sorcery_config.encryption_provider.matches?(@user.send(User.sorcery_config.crypted_password_attribute_name),'secret',@user.salt).should be_true
141
141
  end
142
142
 
143
143
  it "should clear the virtual password field if the encryption process worked" do
@@ -171,14 +171,14 @@ describe "User with no submodules (core)" do
171
171
  create_new_user
172
172
  @user.email = "blup@bla.com"
173
173
  @user.save!
174
- @user.send(User.sorcery_config.crypted_password_attribute_name).should == User.encrypt('secret',@user.salt)
174
+ User.sorcery_config.encryption_provider.matches?(@user.send(User.sorcery_config.crypted_password_attribute_name),'secret',@user.salt).should be_true
175
175
  end
176
176
 
177
177
  it "should replace the crypted_password in case a new password is set" do
178
178
  create_new_user
179
179
  @user.password = 'new_secret'
180
180
  @user.save!
181
- @user.send(User.sorcery_config.crypted_password_attribute_name).should == User.encrypt('new_secret',@user.salt)
181
+ User.sorcery_config.encryption_provider.matches?(@user.send(User.sorcery_config.crypted_password_attribute_name),'secret',@user.salt).should be_false
182
182
  end
183
183
 
184
184
  end
@@ -209,6 +209,10 @@ describe "User with no submodules (core)" do
209
209
  def self.encrypt(*tokens)
210
210
  tokens.flatten.join('').gsub(/e/,'A')
211
211
  end
212
+
213
+ def self.matches?(crypted,*tokens)
214
+ crypted = encrypt(*tokens)
215
+ end
212
216
  end
213
217
  plugin_set_model_config_property(:encryption_algorithm, :custom)
214
218
  plugin_set_model_config_property(:custom_encryption_provider, MyCrypto)
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorcery
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 0
9
- version: 0.1.0
4
+ prerelease:
5
+ version: 0.1.1
10
6
  platform: ruby
11
7
  authors:
12
8
  - Noam Ben Ari
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-02-01 00:00:00 +02:00
13
+ date: 2011-02-04 00:00:00 +02:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -24,10 +20,6 @@ dependencies:
24
20
  requirements:
25
21
  - - "="
26
22
  - !ruby/object:Gem::Version
27
- segments:
28
- - 3
29
- - 0
30
- - 3
31
23
  version: 3.0.3
32
24
  type: :development
33
25
  prerelease: false
@@ -39,10 +31,6 @@ dependencies:
39
31
  requirements:
40
32
  - - ~>
41
33
  - !ruby/object:Gem::Version
42
- segments:
43
- - 2
44
- - 3
45
- - 0
46
34
  version: 2.3.0
47
35
  type: :development
48
36
  prerelease: false
@@ -54,8 +42,6 @@ dependencies:
54
42
  requirements:
55
43
  - - ">="
56
44
  - !ruby/object:Gem::Version
57
- segments:
58
- - 0
59
45
  version: "0"
60
46
  type: :development
61
47
  prerelease: false
@@ -67,8 +53,6 @@ dependencies:
67
53
  requirements:
68
54
  - - ">="
69
55
  - !ruby/object:Gem::Version
70
- segments:
71
- - 0
72
56
  version: "0"
73
57
  type: :development
74
58
  prerelease: false
@@ -80,8 +64,6 @@ dependencies:
80
64
  requirements:
81
65
  - - ">="
82
66
  - !ruby/object:Gem::Version
83
- segments:
84
- - 0
85
67
  version: "0"
86
68
  type: :development
87
69
  prerelease: false
@@ -93,10 +75,6 @@ dependencies:
93
75
  requirements:
94
76
  - - ~>
95
77
  - !ruby/object:Gem::Version
96
- segments:
97
- - 0
98
- - 6
99
- - 0
100
78
  version: 0.6.0
101
79
  type: :development
102
80
  prerelease: false
@@ -108,8 +86,6 @@ dependencies:
108
86
  requirements:
109
87
  - - ">="
110
88
  - !ruby/object:Gem::Version
111
- segments:
112
- - 0
113
89
  version: "0"
114
90
  type: :development
115
91
  prerelease: false
@@ -121,10 +97,6 @@ dependencies:
121
97
  requirements:
122
98
  - - ~>
123
99
  - !ruby/object:Gem::Version
124
- segments:
125
- - 1
126
- - 0
127
- - 0
128
100
  version: 1.0.0
129
101
  type: :development
130
102
  prerelease: false
@@ -136,10 +108,6 @@ dependencies:
136
108
  requirements:
137
109
  - - ~>
138
110
  - !ruby/object:Gem::Version
139
- segments:
140
- - 1
141
- - 5
142
- - 2
143
111
  version: 1.5.2
144
112
  type: :development
145
113
  prerelease: false
@@ -151,10 +119,6 @@ dependencies:
151
119
  requirements:
152
120
  - - ">="
153
121
  - !ruby/object:Gem::Version
154
- segments:
155
- - 0
156
- - 3
157
- - 8
158
122
  version: 0.3.8
159
123
  type: :development
160
124
  prerelease: false
@@ -194,6 +158,7 @@ files:
194
158
  - lib/sorcery/model/submodules/password_reset.rb
195
159
  - lib/sorcery/model/submodules/remember_me.rb
196
160
  - lib/sorcery/model/submodules/user_activation.rb
161
+ - sorcery.gemspec
197
162
  - spec/Gemfile
198
163
  - spec/Gemfile.lock
199
164
  - spec/Rakefile
@@ -283,21 +248,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
283
248
  requirements:
284
249
  - - ">="
285
250
  - !ruby/object:Gem::Version
286
- segments:
287
- - 0
288
251
  version: "0"
289
252
  required_rubygems_version: !ruby/object:Gem::Requirement
290
253
  none: false
291
254
  requirements:
292
255
  - - ">="
293
256
  - !ruby/object:Gem::Version
294
- segments:
295
- - 0
296
257
  version: "0"
297
258
  requirements: []
298
259
 
299
260
  rubyforge_project:
300
- rubygems_version: 1.3.7
261
+ rubygems_version: 1.5.0
301
262
  signing_key:
302
263
  specification_version: 3
303
264
  summary: Magical authentication for Rails 3 applications