class Soar::Authorization::AccessManager::Provider::Policy
Public Class Methods
new(meta: {}, policies: {})
click to toggle source
# File lib/soar/authorization/access_manager/provider/policy.rb, line 14 def initialize(meta: {}, policies: {}) @meta = meta @policies = policies end
Public Instance Methods
Private Instance Methods
ask_policy(policy, subject_identifier, service_identifier, resource_identifier, request)
click to toggle source
# File lib/soar/authorization/access_manager/provider/policy.rb, line 57 def ask_policy(policy, subject_identifier, service_identifier, resource_identifier, request) notifications = [] uri = find_uri(policy) if uri.nil? notifications << "Could not retrieve policy for service" return false, notifications end url = URI.parse(uri) params = { 'resource_identifier' => resource_identifier, 'subject_identifier' => subject_identifier, 'service_identifier' => service_identifier, 'request' => { 'params' => request[:params] }, 'flow_identifier' => request[:params]['flow_identifier'] } res = Net::HTTP.post_form(url, params) result = JSON.parse(res.body) if result['status'] == 'error' notifications << 'Policy query result was not success' return false, notifications end return result['data']['allowed'], notifications rescue => ex notifications << "Exception while asking policy #{ex.message}" return false, notifications end
find_uri(policy)
click to toggle source
# File lib/soar/authorization/access_manager/provider/policy.rb, line 86 def find_uri(policy) @policies[policy] end
get_policy(service_identifier)
click to toggle source
# File lib/soar/authorization/access_manager/provider/policy.rb, line 53 def get_policy(service_identifier) @meta[service_identifier] end