app/services/store_sp_metadata_in_session.rb
# frozen_string_literal: true
class StoreSpMetadataInSession
def initialize(session:, request_id:)
@session = session
@request_id = request_id
end
def call(service_provider_request: nil, requested_service_provider: nil)
@sp_request = service_provider_request if service_provider_request
@service_provider = requested_service_provider
return if sp_request.is_a?(NullServiceProviderRequest)
update_session
end
private
attr_reader :session, :request_id
def sp_request
@sp_request ||= ServiceProviderRequestProxy.from_uuid(request_id)
end
def update_session
session[:sp] = {
issuer: sp_request.issuer,
request_url: sp_request.url,
request_id: sp_request.uuid,
requested_attributes: sp_request.requested_attributes,
acr_values: sp_request.acr_values,
vtr: sp_request.vtr,
}
end
def service_provider
return @service_provider if defined?(@service_provider)
@service_provider = ServiceProvider.find_by(issuer: sp_request.issuer)
end
end