Module: TokenChecksum
- Defined in:
- lib/token_checksum.rb,
lib/token_checksum/base_62.rb,
lib/token_checksum/version.rb
Defined Under Namespace
Modules: Base62
Constant Summary collapse
- REGEX =
/([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]{1,})_([0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]{30})([0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]{6})/- VERSION =
"0.3.0"
Class Method Summary collapse
- .checksum(token) ⇒ Object
- .generate(prefix, secret: "") ⇒ Object
- .prefix(token) ⇒ Object
- .valid?(token, valid_prefixes: [], secret: "") ⇒ Boolean
- .wo_checksum(token) ⇒ Object
Class Method Details
.checksum(token) ⇒ Object
47 48 49 |
# File 'lib/token_checksum.rb', line 47 def checksum(token) token[-6..-1] end |
.generate(prefix, secret: "") ⇒ Object
18 19 20 21 22 23 |
# File 'lib/token_checksum.rb', line 18 def generate(prefix, secret: "") suffix = random_token first_part = "#{prefix}_#{suffix}" checksum = generate_checksum("#{first_part}#{secret}") "#{first_part}#{checksum}" end |
.prefix(token) ⇒ Object
43 44 45 |
# File 'lib/token_checksum.rb', line 43 def prefix(token) token[0...token.index("_")] end |
.valid?(token, valid_prefixes: [], secret: "") ⇒ Boolean
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/token_checksum.rb', line 25 def valid?(token, valid_prefixes: [], secret: "") return false if token.empty? provided_prefix = prefix(token) return false if !valid_prefixes.empty? && !valid_prefixes.include?(provided_prefix) provided_checksum = checksum(token) return false if provided_checksum.empty? # This is the token without the final checksum checksumless_string = wo_checksum(token) return false if checksumless_string.empty? calculated_checksum = generate_checksum("#{checksumless_string}#{secret}") SecureCompare.compare(calculated_checksum, provided_checksum) end |
.wo_checksum(token) ⇒ Object
51 52 53 |
# File 'lib/token_checksum.rb', line 51 def wo_checksum(token) token[0..-7] end |