hashid-rails 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +23 -0
- data/lib/hashid/rails.rb +10 -3
- data/lib/hashid/rails/configuration.rb +6 -1
- data/lib/hashid/rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf52f7660d6373fa40779618384e0ed119723ddb
|
4
|
+
data.tar.gz: 46ab38a8734c1c09a826bc39984bf8201c87a207
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97335ce4d3e274f3dc57d70ecd08f70b851fb5a204051e6d63475b5125f0c045e701761db765b88e627e180eca74336dd013e9dc57afdcbbcd79befc69dce8c7
|
7
|
+
data.tar.gz: d58c2692ca18d302997a6ba1cb690187de52421cff9bbdfbb36687076b2ec8c9be3bc36498789a62bc963bb4a3c01735b06f08fc2672385f6dc797fe11e100ba
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.1.0 (2017-10-04)
|
4
|
+
- Add option to disable hashid signing. This adds backwards compatibility with
|
5
|
+
pre-1.0 releases. Thanks [@olliebennett](https://github.com/olliebennett)! ([#37](https://github.com/jcypret/hashid-rails/pull/37))
|
6
|
+
- Add note to README about upgrading from pre-1.0 releases.
|
7
|
+
|
3
8
|
## 1.0.0 (2017-04-29)
|
4
9
|
- Sign hashids to prevent accidentally decoded regular ids
|
5
10
|
- Require explicitly including Hashid::Rails in models
|
data/README.md
CHANGED
@@ -10,6 +10,9 @@ will instead have unique short hashes like "yLA6m0oM", "5bAyD0LO", and
|
|
10
10
|
"wz3MZ49l". The database will still use integers under the hood, so this gem can
|
11
11
|
be added or removed at any time.
|
12
12
|
|
13
|
+
> IMPORTANT: If you need to maintain the same hashids from a pre-1.0 release,
|
14
|
+
> read the [upgrade notes](#upgrading-from-pre-10).
|
15
|
+
|
13
16
|
## Installation
|
14
17
|
|
15
18
|
Add this line to your application's Gemfile:
|
@@ -110,9 +113,29 @@ Hashid::Rails.configure do |config|
|
|
110
113
|
|
111
114
|
# Whether to override the `find` method
|
112
115
|
config.override_find = true
|
116
|
+
|
117
|
+
# Whether to sign hashids to prevent conflicts with regular IDs (see https://github.com/jcypret/hashid-rails/issues/30)
|
118
|
+
config.sign_hashids = true
|
113
119
|
end
|
114
120
|
```
|
115
121
|
|
122
|
+
## Upgrading from Pre-1.0
|
123
|
+
|
124
|
+
The 1.0 release of this gem introduced hashid signing to prevent
|
125
|
+
conflicts with database IDs that could be mis-interpreted as hashids.
|
126
|
+
IDs are now signed when encoding and the signature verified when decoding.
|
127
|
+
The trade off is that hashids are different than in previous versions due to the added signature.
|
128
|
+
If you need to maintain the same hashids from a pre-1.0 version, set `sign_hashids` to false in the config.
|
129
|
+
|
130
|
+
Additionally, some of the config names have been modified to better match the parent [Hashid](https://github.com/peterhellberg/hashids.rb) project.
|
131
|
+
The config `secret` has been renamed to `salt` and the `length` renamed to `min_hash_length`.
|
132
|
+
Update the initializer config accordingly.
|
133
|
+
|
134
|
+
Lastly, `Hashid::Rails` is no longer imported into `ActiveRecord::Base` by default.
|
135
|
+
You can instead include `Hashid::Rails` selectively in the desired models,
|
136
|
+
or include it in `ApplicationRecord` for Rails 5 to apply to all subclassed models,
|
137
|
+
or add an initializer with `ActiveRecord::Base.send :include, Hashid::Rails` to match previous behavior.
|
138
|
+
|
116
139
|
## Development
|
117
140
|
|
118
141
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
data/lib/hashid/rails.rb
CHANGED
@@ -78,13 +78,20 @@ module Hashid
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def hashid_encode(id)
|
81
|
-
|
81
|
+
if Hashid::Rails.configuration.sign_hashids
|
82
|
+
hashids.encode(HASHID_TOKEN, id)
|
83
|
+
else
|
84
|
+
hashids.encode(id)
|
85
|
+
end
|
82
86
|
end
|
83
87
|
|
84
88
|
def hashid_decode(id)
|
85
89
|
decoded_hashid = hashids.decode(id.to_s)
|
86
|
-
|
87
|
-
|
90
|
+
if Hashid::Rails.configuration.sign_hashids
|
91
|
+
valid_hashid?(decoded_hashid) ? decoded_hashid.last : id
|
92
|
+
else
|
93
|
+
decoded_hashid.first
|
94
|
+
end
|
88
95
|
end
|
89
96
|
|
90
97
|
def valid_hashid?(decoded_hashid)
|
@@ -1,7 +1,11 @@
|
|
1
1
|
module Hashid
|
2
2
|
module Rails
|
3
3
|
class Configuration
|
4
|
-
attr_accessor :salt,
|
4
|
+
attr_accessor :salt,
|
5
|
+
:min_hash_length,
|
6
|
+
:alphabet,
|
7
|
+
:override_find,
|
8
|
+
:sign_hashids
|
5
9
|
|
6
10
|
def initialize
|
7
11
|
@salt = ""
|
@@ -10,6 +14,7 @@ module Hashid
|
|
10
14
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
|
11
15
|
"1234567890"
|
12
16
|
@override_find = true
|
17
|
+
@sign_hashids = true
|
13
18
|
end
|
14
19
|
|
15
20
|
def for_table(table_name)
|
data/lib/hashid/rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hashid-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Cypret
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|