secure-password 1.0.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.
- checksums.yaml +7 -0
- data/.gems +2 -0
- data/README.md +64 -0
- data/lib/secure_password.rb +11 -0
- data/makefile +7 -0
- data/secure-password.gemspec +15 -0
- data/test/secure_password.rb +29 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5d692430f3c8be0c6ccad21f224e08ce0b93d0c6
|
4
|
+
data.tar.gz: de8c69c09c5e080cd36b0846c1764feb066364b4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2330cb1d97b33ddcdbe0a46041f45094c8f0de46ec9c381017260065c0b79ef6cc590515927eab5f84546464554034db0d7f77852501a0680abcd438404984e1
|
7
|
+
data.tar.gz: 9748b9b6d87186372fcca5d9fe883715fa5082cdf4cfb12272e61cb078be6841c37f53ac03dec7c20225a9d929c41befd75c2d60257e8d16222a527ef21517b2
|
data/.gems
ADDED
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
secure-password
|
2
|
+
===============
|
3
|
+
|
4
|
+
Small library to store a secure hash of your users' passwords.
|
5
|
+
It uses the [Bcrypt][bcrypt-ruby] password hashing algorithm.
|
6
|
+
|
7
|
+
Usage
|
8
|
+
-----
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
require "secure_password"
|
12
|
+
|
13
|
+
class User
|
14
|
+
include SecurePassword
|
15
|
+
|
16
|
+
# A `password_digest` attribute is required.
|
17
|
+
attr_accessor :password_digest
|
18
|
+
end
|
19
|
+
|
20
|
+
user = User.new
|
21
|
+
user.password = "123456"
|
22
|
+
|
23
|
+
user.password_digest
|
24
|
+
# => "$2a$10$rHxX0jSF14JErSjrrFTB9exXPRkbzpq9.mg9nV2vHZVIjOqKQNvQe"
|
25
|
+
|
26
|
+
user.authenticate("nopassword")
|
27
|
+
# => false
|
28
|
+
|
29
|
+
user.authenticate("123456")
|
30
|
+
# => true
|
31
|
+
```
|
32
|
+
|
33
|
+
It's important to note that BCrypt hash function can handle
|
34
|
+
maximum 72 characters. It's recommended to validate the length
|
35
|
+
of a given password before creating a record.
|
36
|
+
|
37
|
+
The next example uses [Scrivener][scrivener]:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
class Signup
|
41
|
+
attr_accessor :username
|
42
|
+
attr_accessor :password
|
43
|
+
|
44
|
+
def validate
|
45
|
+
assert_present(:username)
|
46
|
+
assert_length(:password, 8..72)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
signup = Signup.new(params)
|
51
|
+
if signup.valid?
|
52
|
+
User.create(signup.attributes)
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
Installation
|
57
|
+
------------
|
58
|
+
|
59
|
+
```
|
60
|
+
$ gem install secure-password
|
61
|
+
```
|
62
|
+
|
63
|
+
[scrivener]: https://github.com/soveran/scrivener
|
64
|
+
[bcrypt-ruby]: https://github.com/codahale/bcrypt-ruby
|
data/makefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "secure-password"
|
3
|
+
s.version = "1.0.0"
|
4
|
+
s.summary = "Securing your users' passwords."
|
5
|
+
s.description = s.summary
|
6
|
+
s.authors = ["Francesco Rodríguez", "Mayn Kjær"]
|
7
|
+
s.email = ["frodsan@me.com", "mayn.kjaer@gmail.com"]
|
8
|
+
s.homepage = "https://github.com/harmoni-io/secure-password"
|
9
|
+
s.license = "MIT"
|
10
|
+
|
11
|
+
s.files = `git ls-files`.split("\n")
|
12
|
+
|
13
|
+
s.add_dependency("bcrypt", "~> 3.1")
|
14
|
+
s.add_development_dependency("cutest")
|
15
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "cutest"
|
2
|
+
require_relative "../lib/secure_password"
|
3
|
+
|
4
|
+
class User
|
5
|
+
include SecurePassword
|
6
|
+
|
7
|
+
attr_accessor :password_digest
|
8
|
+
end
|
9
|
+
|
10
|
+
test "sets hashed password" do
|
11
|
+
user = User.new
|
12
|
+
user.password = "123456"
|
13
|
+
|
14
|
+
assert BCrypt::Password.valid_hash?(user.password_digest)
|
15
|
+
end
|
16
|
+
|
17
|
+
test "successful authentication" do
|
18
|
+
user = User.new
|
19
|
+
user.password = "123456"
|
20
|
+
|
21
|
+
assert user.authenticate("123456")
|
22
|
+
end
|
23
|
+
|
24
|
+
test "failed authentication" do
|
25
|
+
user = User.new
|
26
|
+
user.password = "123456"
|
27
|
+
|
28
|
+
assert !(user.authenticate("xxxxxx"))
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: secure-password
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Francesco Rodríguez
|
8
|
+
- Mayn Kjær
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-12-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bcrypt
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '3.1'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '3.1'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: cutest
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
description: Securing your users' passwords.
|
43
|
+
email:
|
44
|
+
- frodsan@me.com
|
45
|
+
- mayn.kjaer@gmail.com
|
46
|
+
executables: []
|
47
|
+
extensions: []
|
48
|
+
extra_rdoc_files: []
|
49
|
+
files:
|
50
|
+
- ".gems"
|
51
|
+
- README.md
|
52
|
+
- lib/secure_password.rb
|
53
|
+
- makefile
|
54
|
+
- secure-password.gemspec
|
55
|
+
- test/secure_password.rb
|
56
|
+
homepage: https://github.com/harmoni-io/secure-password
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
metadata: {}
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubyforge_project:
|
76
|
+
rubygems_version: 2.2.2
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Securing your users' passwords.
|
80
|
+
test_files: []
|