class Slots::JWT::Configuration

Attributes

authentication_model[W]
login_regex_validations[RW]
logins[R]
previous_jwt_lifetime[RW]
session_lifetime[RW]
token_lifetime[RW]

Public Class Methods

new() click to toggle source

raise_no_error is used for rake to load

# File lib/slots/jwt/configuration.rb, line 13
def initialize
  @logins = {email: //}
  @login_regex_validations = true
  @authentication_model = 'User'
  @secret_keys = [{created_at: 0, secret: ENV['SLOT_SECRET']}]
  @token_lifetime = 1.hour
  @session_lifetime = 2.weeks # Set to nil if you dont want sessions
  @previous_jwt_lifetime = 5.seconds # Set to nil if you dont want sessions
  @manage_callbacks = Proc.new { }
end

Public Instance Methods

authentication_model() click to toggle source
# File lib/slots/jwt/configuration.rb, line 36
def authentication_model
  @authentication_model.to_s.constantize rescue nil
end
logins=(value) click to toggle source
# File lib/slots/jwt/configuration.rb, line 24
def logins=(value)
  if value.is_a? Symbol
    @logins = {value => //}
  elsif value.is_a?(Hash)
    # Should do most inclusive regex last
    raise 'must be hash of symbols => regex' unless value.length > 0 && value.all? { |k, v| k.is_a?(Symbol) && v.is_a?(Regexp) }
    @logins = value
  else
    raise 'must be a symbol or hash'
  end
end
secret(at = Time.now.to_i) click to toggle source
# File lib/slots/jwt/configuration.rb, line 60
def secret(at = Time.now.to_i)
  @secret_keys.each do |secret_hash|
    return secret_hash[:secret] if at > secret_hash[:created_at]
  end
  raise InvalidSecret, 'Invalid Secret'
end
secret=(v) click to toggle source
# File lib/slots/jwt/configuration.rb, line 40
def secret=(v)
  @secret_keys = [{created_at: 0, secret: v}]
end
secret_yaml=(file_path_string) click to toggle source
# File lib/slots/jwt/configuration.rb, line 44
def secret_yaml=(file_path_string)
  secret_keys = YAML.load_file(Slots::JWT.secret_yaml_file)
  @secret_keys = []
  secret_keys.each do |secret_key|
    raise ArgumentError, 'Need CREATED_AT' unless (created_at = secret_key['CREATED_AT']&.to_i)
    raise ArgumentError, 'Need SECRET' unless (secret = secret_key['SECRET'])
    previous_created_at = @secret_keys[-1]&.dig(:created_at) || Time.now.to_i

    raise ArgumentError, 'CREATED_AT must be newest to latest' unless previous_created_at > created_at
    @secret_keys.push(
      created_at: created_at,
      secret: secret
    )
  end
end