Sha256: d19b1686de7b1e287168467b0340f812df13d7d7a988ca0d84e373c5e78db2ba
Contents?: true
Size: 959 Bytes
Versions: 3
Compression:
Stored size: 959 Bytes
Contents
module QuizApiClient::Services class JwtService HASHING_ALGORITHM = 'HS512'.freeze 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: URI.parse("#{protocol}://#{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