Sha256: 79489458420a947ab047ee4aaf40405e3ece6635c5ec40085c9a89aa369562f4

Contents?: true

Size: 758 Bytes

Versions: 11

Compression:

Stored size: 758 Bytes

Contents

require "jwt"

module ScimRails
  module Encoder
    extend self

    def encode(company)
      payload = {
        iat: Time.current.to_i,
        ScimRails.config.basic_auth_model_searchable_attribute =>
          company.public_send(ScimRails.config.basic_auth_model_searchable_attribute)
      }

      JWT.encode(payload, ScimRails.config.signing_secret, ScimRails.config.signing_algorithm)
    end

    def decode(token)
      verify = ScimRails.config.signing_algorithm != ScimRails::Config::ALGO_NONE

      JWT.decode(token, ScimRails.config.signing_secret, verify, algorithm: ScimRails.config.signing_algorithm).first
    rescue JWT::VerificationError, JWT::DecodeError
      raise ScimRails::ExceptionHandler::InvalidCredentials
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
scimaenaga-0.9.0 lib/scim_rails/encoder.rb
scimaenaga-0.8.0 lib/scim_rails/encoder.rb
scimaenaga-0.7.0 lib/scim_rails/encoder.rb
scimaenaga-0.6.2 lib/scim_rails/encoder.rb
scimaenaga-0.6.1 lib/scim_rails/encoder.rb
scimaenaga-0.6.0 lib/scim_rails/encoder.rb
scimaenaga-0.5.0 lib/scim_rails/encoder.rb
scimaenaga-0.4.1 lib/scim_rails/encoder.rb
scim_rails-0.4.0 lib/scim_rails/encoder.rb
scim_rails-0.3.1 lib/scim_rails/encoder.rb
scim_rails-0.3.0 lib/scim_rails/encoder.rb