sequel_secure_password 0.2.14 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f782fba9202ca70da14d5d3df72bdda93b50d12
4
- data.tar.gz: 3c5e554d0493c75e9774c80dee73e709ef49e6f9
3
+ metadata.gz: 49f624d3a015d6565492278ec5e5bd249beb3cb0
4
+ data.tar.gz: 2b94d0cf5df97b0ac4d68214c22f434f09d19ef0
5
5
  SHA512:
6
- metadata.gz: 801bb73dc87429fb789d565ea30e9da14bb771b3ea5fc938bcae45c5ad872366197de4f175faad8f86d7876d864b5cc04d9137613f00eefe3511ed86a8953e62
7
- data.tar.gz: 7c6586f236cc197e2fb0cfd9bf199863533ad09ff3178a8701dee3ef74032ed8808a70fc8a0ab0e1550278eee741e09368cc2db97bf241f1ebcb745e96539166
6
+ metadata.gz: '006899fdf56b909c44588d474d94584ba03165548f00d97c2f3eba284903b04a8b917421f2b39cafddf63de11fbff1ebc30cb8c9d730457ddb9766cc8daeff87'
7
+ data.tar.gz: 37026898cb3ece6eb738ca4b0aee0d08aacbd3e59620dbf21a0aa4624abf7c26a21ec70fbc67441506826f25d151e0bf1c5d0c98f8ab0bd406884b2d6dc33a39
@@ -5,3 +5,6 @@ rvm:
5
5
  - 2.1
6
6
  - 2.2
7
7
  - 2.3
8
+ - 2.4
9
+ - ruby-head
10
+ - jruby-9.1.13.0
@@ -0,0 +1,64 @@
1
+ require "sequel"
2
+ require "bcrypt"
3
+
4
+ module Sequel
5
+ module Plugins
6
+ module SecurePassword
7
+ def self.blank_string?(string)
8
+ string.nil? or string =~ /\A\s*\z/
9
+ end
10
+
11
+ # Configure the plugin by setting the available options. Options:
12
+ # * :cost - the cost factor when creating password hash. Default:
13
+ # BCrypt::Engine::DEFAULT_COST(10)
14
+ # * :include_validations - when set to false, password present and
15
+ # confirmation validations won't be included. Default: true
16
+ def self.configure(model, options = {})
17
+ model.instance_eval do
18
+ @cost = options.fetch(:cost, BCrypt::Engine.cost)
19
+ @include_validations = options.fetch(:include_validations, true)
20
+ @digest_column = options.fetch(:digest_column, :password_digest)
21
+ end
22
+ end
23
+
24
+ module ClassMethods
25
+ attr_reader :cost, :include_validations, :digest_column
26
+
27
+ # NOTE: nil as a value means that the value of the instance variable
28
+ # will be assigned as is in the subclass.
29
+ Plugins.inherited_instance_variables(self, :@cost => nil,
30
+ :@include_validations => nil,
31
+ :@digest_column => nil)
32
+ end
33
+
34
+ module InstanceMethods
35
+ attr_accessor :password_confirmation
36
+ attr_reader :password
37
+
38
+ def password=(unencrypted)
39
+ @password = unencrypted
40
+
41
+ unless SecurePassword.blank_string?(unencrypted)
42
+ self.send "#{model.digest_column}=", BCrypt::Password.create(unencrypted, :cost => model.cost)
43
+ end
44
+ end
45
+
46
+ def authenticate(unencrypted)
47
+ if BCrypt::Password.new(self.send(model.digest_column)) == unencrypted
48
+ self
49
+ end
50
+ end
51
+
52
+ def validate
53
+ super
54
+
55
+ if model.include_validations
56
+ errors.add :password, 'is not present' if SecurePassword.blank_string?(self.send(model.digest_column))
57
+ errors.add :password, 'doesn\'t match confirmation' if password != password_confirmation
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+
@@ -1,65 +1 @@
1
- require "sequel_secure_password/version"
2
- require "sequel"
3
- require "bcrypt"
4
-
5
- module Sequel
6
- module Plugins
7
- module SecurePassword
8
- def self.blank_string?(string)
9
- string.nil? or string =~ /\A\s*\z/
10
- end
11
-
12
- # Configure the plugin by setting the available options. Options:
13
- # * :cost - the cost factor when creating password hash. Default:
14
- # BCrypt::Engine::DEFAULT_COST(10)
15
- # * :include_validations - when set to false, password present and
16
- # confirmation validations won't be included. Default: true
17
- def self.configure(model, options = {})
18
- model.instance_eval do
19
- @cost = options.fetch(:cost, BCrypt::Engine.cost)
20
- @include_validations = options.fetch(:include_validations, true)
21
- @digest_column = options.fetch(:digest_column, :password_digest)
22
- end
23
- end
24
-
25
- module ClassMethods
26
- attr_reader :cost, :include_validations, :digest_column
27
-
28
- # NOTE: nil as a value means that the value of the instance variable
29
- # will be assigned as is in the subclass.
30
- Plugins.inherited_instance_variables(self, :@cost => nil,
31
- :@include_validations => nil,
32
- :@digest_column => nil)
33
- end
34
-
35
- module InstanceMethods
36
- attr_accessor :password_confirmation
37
- attr_reader :password
38
-
39
- def password=(unencrypted)
40
- @password = unencrypted
41
-
42
- unless SecurePassword.blank_string?(unencrypted)
43
- self.send "#{model.digest_column}=", BCrypt::Password.create(unencrypted, :cost => model.cost)
44
- end
45
- end
46
-
47
- def authenticate(unencrypted)
48
- if BCrypt::Password.new(self.send(model.digest_column)) == unencrypted
49
- self
50
- end
51
- end
52
-
53
- def validate
54
- super
55
-
56
- if model.include_validations
57
- errors.add :password, 'is not present' if SecurePassword.blank_string?(self.send(model.digest_column))
58
- errors.add :password, 'doesn\'t match confirmation' if password != password_confirmation
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end
65
-
1
+ require 'sequel/plugins/secure_password'
@@ -1,3 +1,3 @@
1
1
  module SequelSecurePassword
2
- VERSION = "0.2.14"
2
+ VERSION = "0.2.15"
3
3
  end
@@ -23,7 +23,7 @@ EOF
23
23
  gem.require_paths = ["lib"]
24
24
 
25
25
  gem.add_dependency 'bcrypt', ['>= 3.1', '< 4.0']
26
- gem.add_dependency 'sequel', ['>= 4.1.0', '< 5.0']
26
+ gem.add_dependency 'sequel', ['>= 4.1.0', '< 6.0']
27
27
 
28
28
  gem.add_development_dependency 'rspec', '~> 3.0'
29
29
  gem.add_development_dependency 'rake', '~> 12'
@@ -3,60 +3,57 @@ require 'bundler'
3
3
  Bundler.setup
4
4
 
5
5
  require 'sequel'
6
- require 'sequel_secure_password'
6
+ require 'sequel/extensions/migration'
7
+ require 'sequel/plugins/secure_password'
7
8
 
8
- adapter = RUBY_PLATFORM == "java" ? 'jdbc:sqlite::memory:' : 'sqlite:/'
9
+ adapter = RUBY_PLATFORM == 'java' ? 'jdbc:sqlite::memory:' : 'sqlite:/'
9
10
 
10
11
  RSpec.configure do |c|
11
12
  c.before :suite do
12
- Sequel::Model.plugin(:schema)
13
- Sequel.connect adapter
14
-
15
- class User < Sequel::Model
16
- set_schema do
17
- primary_key :id
18
- varchar :password_digest
13
+ Sequel::Model.db = Sequel.connect(adapter)
14
+
15
+ Sequel.migration do
16
+ up do
17
+ create_table(:users) do
18
+ primary_key :id
19
+ varchar :password_digest
20
+ end
21
+
22
+ create_table(:high_cost_users) do
23
+ primary_key :id
24
+ varchar :password_digest
25
+ end
26
+
27
+ create_table(:user_without_validations) do
28
+ primary_key :id
29
+ varchar :password_digest
30
+ end
31
+
32
+ create_table(:user_with_alternate_digest_columns) do
33
+ primary_key :id
34
+ varchar :password_hash
35
+ end
19
36
  end
37
+ end.apply(Sequel::Model.db, :up)
20
38
 
39
+ class User < Sequel::Model
21
40
  plugin :secure_password
22
41
  end
23
42
 
24
43
  class HighCostUser < Sequel::Model
25
- set_schema do
26
- primary_key :id
27
- varchar :password_digest
28
- end
29
-
30
44
  plugin :secure_password, cost: 12
31
45
  end
32
46
 
33
47
  class UserWithoutValidations < Sequel::Model
34
- set_schema do
35
- primary_key :id
36
- varchar :password_digest
37
- end
38
-
39
48
  plugin :secure_password, include_validations: false
40
49
  end
41
50
 
42
51
  class UserWithAlternateDigestColumn < Sequel::Model
43
- set_schema do
44
- primary_key :id
45
- varchar :password_hash
46
- end
47
-
48
52
  plugin :secure_password, digest_column: :password_hash
49
53
  end
50
-
51
- User.create_table!
52
- HighCostUser.create_table!
53
- UserWithoutValidations.create_table!
54
- UserWithAlternateDigestColumn.create_table!
55
54
  end
56
55
 
57
- c.around :each do |example|
58
- Sequel::Model.db.transaction(:rollback => :always) { example.run }
56
+ c.around(:each) do |example|
57
+ Sequel::Model.db.transaction(rollback: :always) { example.run }
59
58
  end
60
59
  end
61
-
62
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_secure_password
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mateusz Lenik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-24 00:00:00.000000000 Z
11
+ date: 2017-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: 4.1.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '5.0'
42
+ version: '6.0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: 4.1.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '5.0'
52
+ version: '6.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +126,7 @@ files:
126
126
  - LICENSE.txt
127
127
  - README.md
128
128
  - Rakefile
129
+ - lib/sequel/plugins/secure_password.rb
129
130
  - lib/sequel_secure_password.rb
130
131
  - lib/sequel_secure_password/version.rb
131
132
  - sequel_secure_password.gemspec
@@ -151,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
152
  version: '0'
152
153
  requirements: []
153
154
  rubyforge_project:
154
- rubygems_version: 2.6.10
155
+ rubygems_version: 2.6.14
155
156
  signing_key:
156
157
  specification_version: 4
157
158
  summary: Plugin adds BCrypt authentication and password hashing to Sequel models.