Class: SoarPl::AuthorizationPolicy
- Inherits:
-
Object
- Object
- SoarPl::AuthorizationPolicy
- Includes:
- Jsender
- Defined in:
- lib/soar_pl/authorization_policy.rb
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
#idm ⇒ Object
readonly
Returns the value of attribute idm.
-
#policy_configuration ⇒ Object
readonly
Returns the value of attribute policy_configuration.
-
#policy_identifier ⇒ Object
readonly
Returns the value of attribute policy_identifier.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#request_debug_allow ⇒ Object
Returns the value of attribute request_debug_allow.
-
#requestor_identifier ⇒ Object
readonly
Returns the value of attribute requestor_identifier.
-
#roles ⇒ Object
readonly
Returns the value of attribute roles.
-
#rule_set ⇒ Object
readonly
Returns the value of attribute rule_set.
-
#status ⇒ Object
Returns the value of attribute status.
-
#subject_identifier ⇒ Object
readonly
Returns the value of attribute subject_identifier.
Instance Method Summary collapse
- #authorize(subject_identifier, requestor_identifier, resource_identifier, request) ⇒ Object
- #has_idm(idm) ⇒ Object
-
#initialize(policy_identifier, policy_configuration) ⇒ AuthorizationPolicy
constructor
A new instance of AuthorizationPolicy.
- #requires_roles(roles) ⇒ Object
Constructor Details
#initialize(policy_identifier, policy_configuration) ⇒ AuthorizationPolicy
Returns a new instance of AuthorizationPolicy.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/soar_pl/authorization_policy.rb', line 19 def initialize(policy_identifier, policy_configuration) data = { 'dependencies' => { 'configuration' => 'invalid', 'policy_identifier' => 'invalid', 'rule_set' => 'invalid' } } @roles = [] @policy_identifier = policy_identifier @configuration = policy_configuration valid_policy_identifier = valid_non_empty_string?(policy_identifier) valid_configuration = @configuration.is_a?(Hash) #byebug valid_rule_set = (self.class.name != 'SoarPl::AuthorizationPolicy') if (policy_identifier.nil?) @status = fail('no identifier provided') elsif (not valid_policy_identifier) @status = fail('invalid identifier provided') elsif policy_configuration.nil? @status = fail('no configuration provided') elsif not valid_configuration @status = fail('invalid configuration provided', data) elsif not valid_rule_set # Must extend this class and provide a rule set in apply_rule_set(...) @status = fail('invalid rule set provided') else @status = success_data(data) end data['dependencies']['configuration'] = (valid_configuration ? 'valid' : 'invalid') data['dependencies']['rule_set'] = (valid_rule_set ? 'valid' : 'invalid') data['dependencies']['policy_identifier'] = (valid_policy_identifier ? 'valid' : 'invalid') setup end |
Instance Attribute Details
#configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
12 13 14 |
# File 'lib/soar_pl/authorization_policy.rb', line 12 def configuration @configuration end |
#idm ⇒ Object (readonly)
Returns the value of attribute idm.
14 15 16 |
# File 'lib/soar_pl/authorization_policy.rb', line 14 def idm @idm end |
#policy_configuration ⇒ Object (readonly)
Returns the value of attribute policy_configuration.
8 9 10 |
# File 'lib/soar_pl/authorization_policy.rb', line 8 def policy_configuration @policy_configuration end |
#policy_identifier ⇒ Object (readonly)
Returns the value of attribute policy_identifier.
7 8 9 |
# File 'lib/soar_pl/authorization_policy.rb', line 7 def policy_identifier @policy_identifier end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
11 12 13 |
# File 'lib/soar_pl/authorization_policy.rb', line 11 def request @request end |
#request_debug_allow ⇒ Object
Returns the value of attribute request_debug_allow.
17 18 19 |
# File 'lib/soar_pl/authorization_policy.rb', line 17 def request_debug_allow @request_debug_allow end |
#requestor_identifier ⇒ Object (readonly)
Returns the value of attribute requestor_identifier.
10 11 12 |
# File 'lib/soar_pl/authorization_policy.rb', line 10 def requestor_identifier @requestor_identifier end |
#roles ⇒ Object (readonly)
Returns the value of attribute roles.
15 16 17 |
# File 'lib/soar_pl/authorization_policy.rb', line 15 def roles @roles end |
#rule_set ⇒ Object (readonly)
Returns the value of attribute rule_set.
13 14 15 |
# File 'lib/soar_pl/authorization_policy.rb', line 13 def rule_set @rule_set end |
#status ⇒ Object
Returns the value of attribute status.
16 17 18 |
# File 'lib/soar_pl/authorization_policy.rb', line 16 def status @status end |
#subject_identifier ⇒ Object (readonly)
Returns the value of attribute subject_identifier.
9 10 11 |
# File 'lib/soar_pl/authorization_policy.rb', line 9 def subject_identifier @subject_identifier end |
Instance Method Details
#authorize(subject_identifier, requestor_identifier, resource_identifier, request) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/soar_pl/authorization_policy.rb', line 63 def (subject_identifier, requestor_identifier, resource_identifier, request) #byebug requested = request begin requested = JSON.parse(request) if not request.is_a?(Hash) rescue => ex return fail("Invalid request", build_result(false, "Invalid request", @idm)) end return fail_invalid("resource identifier") if not valid_non_empty_string?(resource_identifier) return fail("Invalid request", build_result(false, "Invalid request", @idm)) if requested and not requested.is_a?(Hash) return fail_invalid("requestor identifier") if not valid_non_empty_string?(requestor_identifier) return fail_invalid("subject identifier") if not valid_non_empty_string?(subject_identifier) subject_roles = [] attributes = {} begin subject_roles = discover_subject_roles(subject_identifier) if @idm rescue => ex error = 'Entity error (IDM)' return fail(error, build_result(false, error, @idm)) end return success_data(build_result(false, "Role missing", @idm)) if not roles_present?(subject_roles, @roles) begin attributes = discover_subject_role_attributes(subject_identifier, subject_roles) if @idm rescue => ex error = 'Entity error (IDM)' return fail(error, build_result(false, error, @idm)) end result, = apply_rule_set(subject_identifier, requestor_identifier, resource_identifier, requested, subject_roles, attributes) if (result) success_data(build_result(true, , @idm)) else success_data(build_result(false, , @idm)) end end |
#has_idm(idm) ⇒ Object
59 60 61 |
# File 'lib/soar_pl/authorization_policy.rb', line 59 def has_idm(idm) @idm = idm end |
#requires_roles(roles) ⇒ Object
53 54 55 56 57 |
# File 'lib/soar_pl/authorization_policy.rb', line 53 def requires_roles(roles) roles = [roles] if not roles.is_a?(Array) @roles = roles end |