Sha256: 6d31f25f987235389c6bf8f6a5894e34aa5cdccb732609ca46f252000267e5d6

Contents?: true

Size: 936 Bytes

Versions: 3

Compression:

Stored size: 936 Bytes

Contents

require 'jwt'

module QuizApiClient::Services
  HASHING_ALGORITHM = 'HS512'.freeze
  class JwtService
    attr_reader :consumer_key, :host, :shared_secret, :protocol

    def initialize(consumer_key: nil, shared_secret:, host:, protocol: 'https')
      @consumer_key = consumer_key
      @host = host
      @shared_secret = shared_secret
      @protocol = protocol
    end

    def grant_permission(scope:, exp: nil, resource_id: nil)
      payload = {
        host: host,
        consumer_key: consumer_key,
        scope: scope,
        exp: exp || Time.now.utc.to_i + 60,

        # FIXME: This is currently required on quiz_web
        user: {
          full_name: 'Fake Full Name',
          given_name: 'Fake',
          email: 'quizzes+fake@instructure.com',
          id: 1
        }
      }
      payload[:resource_id] = resource_id if resource_id

      JWT.encode(payload, shared_secret, HASHING_ALGORITHM)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
quiz_api_client-0.1.5 lib/quiz_api_client/services/jwt_service.rb
quiz_api_client-0.1.4 lib/quiz_api_client/services/jwt_service.rb
quiz_api_client-0.1.3 lib/quiz_api_client/services/jwt_service.rb