class DMAO::JWT::API::TokenIssuer

Public Class Methods

new(issuer_name) click to toggle source
# File lib/dmao/jwt/api/token_issuer.rb, line 13
def initialize issuer_name
  @issuer_name = issuer_name
end

Public Instance Methods

request_token(subject, institution_id, roles) click to toggle source
# File lib/dmao/jwt/api/token_issuer.rb, line 17
def request_token subject, institution_id, roles

  if @issuer_name.nil? || @issuer_name.empty?
    raise DMAO::JWT::API::Errors::InvalidJWTIssuer.new("JWT Issuer not set for token generator")
  end

  custom_claims = {
      institution_id: institution_id,
      roles: roles
  }

  request_attributes = {
      subject: subject,
      custom_claims: custom_claims
  }

  begin
    response = DMAO::JWT::API::Base.api["#{@issuer_name}/tokens"].post request_attributes.to_json
  rescue RestClient::NotFound
    raise DMAO::JWT::API::Errors::InvalidJWTIssuer
  rescue RestClient::UnprocessableEntity, RestClient::InternalServerError
    raise DMAO::JWT::API::Errors::UnableToIssueToken
  end

  JSON.parse(response.body)["token"]

end