module MortalToken

Constants

VERSION

Library version

Attributes

digest[R]

The digest to use. Defaults to ‘sha512’.

salt_length[RW]

Salt length in bytes. Defaults to 8.

secret[RW]

The master secret token (Keep it secret! Keep it safe!). Changing this will invalidate all existing tokens.

Public Class Methods

create(seconds, message = nil) click to toggle source

Create a new token that lasts for N seconds. Message is optional, but must be a string when present.

# File lib/mortal-token/mortal-token.rb, line 3
def self.create(seconds, message = nil)
  expires = Time.now.utc.to_i + seconds
  salt = SecureRandom.hex MortalToken.salt_length
  Token.new expires, salt, message
end
digest=(name) click to toggle source

Set a new digest type

# File lib/mortal-token/config.rb, line 12
def self.digest=(name)
  @digest = OpenSSL::Digest.new name
end
recover(token_str) click to toggle source

Recover a token and digest created with MortalToken#to_s. Returns [token, digest]. You must then check their validity with “token == digest”

# File lib/mortal-token/mortal-token.rb, line 11
def self.recover(token_str)
  h = JSON.parse Base64.urlsafe_decode64 token_str.to_s
  token = Token.new h['expires'], h['salt'], h['message']
  return token, h['digest']
rescue ArgumentError, JSON::ParserError
  return create 0, ''
end
valid?(token_str) click to toggle source

Check if a token created with MoralToken#to_s is valid.

# File lib/mortal-token/mortal-token.rb, line 20
def self.valid?(token_str)
  token, digest = recover token_str
  token == digest
end