drillbit 2.11.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/drillbit.rb +1 -0
- data/lib/drillbit/accept_header.rb +1 -0
- data/lib/drillbit/authorizable_resource.rb +61 -60
- data/lib/drillbit/authorizers/parameters.rb +1 -0
- data/lib/drillbit/authorizers/parameters/filtering.rb +7 -6
- data/lib/drillbit/authorizers/parameters/inclusions.rb +6 -9
- data/lib/drillbit/authorizers/parameters/resource.rb +20 -19
- data/lib/drillbit/authorizers/query.rb +1 -0
- data/lib/drillbit/authorizers/scope.rb +5 -4
- data/lib/drillbit/compatibility/controllers.rb +1 -0
- data/lib/drillbit/configuration.rb +14 -16
- data/lib/drillbit/errors/invalid_api_request.rb +1 -0
- data/lib/drillbit/errors/invalid_request_body.rb +1 -0
- data/lib/drillbit/errors/invalid_subdomain.rb +1 -0
- data/lib/drillbit/errors/invalid_token.rb +1 -0
- data/lib/drillbit/errors/unpermitted_inclusions.rb +1 -0
- data/lib/drillbit/matchers/accept_header.rb +1 -0
- data/lib/drillbit/matchers/generic.rb +4 -3
- data/lib/drillbit/matchers/subdomain.rb +5 -6
- data/lib/drillbit/matchers/version.rb +3 -2
- data/lib/drillbit/middleware/api_request_validator.rb +4 -3
- data/lib/drillbit/middleware/parameter_parser.rb +1 -0
- data/lib/drillbit/middleware/token_processor.rb +1 -0
- data/lib/drillbit/parameters/filter.rb +12 -11
- data/lib/drillbit/parameters/index.rb +3 -2
- data/lib/drillbit/parameters/page.rb +1 -0
- data/lib/drillbit/parameters/sort.rb +1 -0
- data/lib/drillbit/requests/base.rb +1 -1
- data/lib/drillbit/requests/rack.rb +3 -0
- data/lib/drillbit/requests/rails.rb +1 -0
- data/lib/drillbit/resource.rb +1 -0
- data/lib/drillbit/resource/model.rb +5 -4
- data/lib/drillbit/resource/naming.rb +11 -10
- data/lib/drillbit/resource/processors/filtering.rb +1 -0
- data/lib/drillbit/resource/processors/indexing.rb +1 -0
- data/lib/drillbit/resource/processors/paging.rb +4 -3
- data/lib/drillbit/resource/processors/sorting.rb +1 -0
- data/lib/drillbit/responses/invalid_api_request.rb +3 -0
- data/lib/drillbit/responses/invalid_request_body.rb +3 -0
- data/lib/drillbit/responses/invalid_subdomain.rb +3 -0
- data/lib/drillbit/responses/invalid_token.rb +3 -0
- data/lib/drillbit/serializers/json_api.rb +12 -11
- data/lib/drillbit/tokens/base64.rb +1 -0
- data/lib/drillbit/tokens/base64s/invalid.rb +1 -0
- data/lib/drillbit/tokens/base64s/null.rb +1 -0
- data/lib/drillbit/tokens/invalid.rb +1 -0
- data/lib/drillbit/tokens/json_web_token.rb +6 -5
- data/lib/drillbit/tokens/json_web_tokens/invalid.rb +1 -0
- data/lib/drillbit/tokens/json_web_tokens/null.rb +1 -0
- data/lib/drillbit/tokens/json_web_tokens/password_reset.rb +1 -0
- data/lib/drillbit/tokens/null.rb +1 -0
- data/lib/drillbit/utilities/string.rb +1 -0
- data/lib/drillbit/version.rb +2 -1
- metadata +28 -94
- metadata.gz.sig +0 -0
- data/Rakefile +0 -2
- data/spec/drillbit/accept_header_spec.rb +0 -119
- data/spec/drillbit/authorizers/parameters/filtering_spec.rb +0 -101
- data/spec/drillbit/authorizers/parameters/resource_spec.rb +0 -12
- data/spec/drillbit/authorizers/parameters_spec.rb +0 -19
- data/spec/drillbit/authorizers/query_spec.rb +0 -24
- data/spec/drillbit/authorizers/scope_spec.rb +0 -21
- data/spec/drillbit/errors/invalid_api_request_spec.rb +0 -31
- data/spec/drillbit/errors/invalid_request_body_spec.rb +0 -25
- data/spec/drillbit/errors/invalid_subdomain_spec.rb +0 -30
- data/spec/drillbit/errors/invalid_token_spec.rb +0 -24
- data/spec/drillbit/invalid_subdomain_spec.rb +0 -45
- data/spec/drillbit/invalid_token_spec.rb +0 -44
- data/spec/drillbit/matchers/accept_header_spec.rb +0 -114
- data/spec/drillbit/matchers/subdomain_spec.rb +0 -78
- data/spec/drillbit/matchers/version_spec.rb +0 -86
- data/spec/drillbit/middleware/api_request_validator_spec.rb +0 -185
- data/spec/drillbit/middleware/parameter_parser_spec.rb +0 -200
- data/spec/drillbit/middleware/token_processor_spec.rb +0 -27
- data/spec/drillbit/requests/base_spec.rb +0 -37
- data/spec/drillbit/requests/rack_spec.rb +0 -252
- data/spec/drillbit/requests/rails_spec.rb +0 -264
- data/spec/drillbit/resource/model_spec.rb +0 -64
- data/spec/drillbit/resource/processors/filtering_spec.rb +0 -106
- data/spec/drillbit/resource/processors/indexing_spec.rb +0 -45
- data/spec/drillbit/resource/processors/paging_spec.rb +0 -74
- data/spec/drillbit/resource/processors/sorting_spec.rb +0 -66
- data/spec/drillbit/tokens/base64_spec.rb +0 -44
- data/spec/drillbit/tokens/json_web_token_spec.rb +0 -231
- data/spec/drillbit/tokens/json_web_tokens/password_reset_spec.rb +0 -43
- data/spec/fixtures/test_rsa_key +0 -27
- data/spec/fixtures/test_rsa_key.pub +0 -9
- data/spec/spec_helper.rb +0 -4
- data/spec/support/private_keys.rb +0 -42
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 21b351789867855382f7d34e1e9be5992ba79675
         | 
| 4 | 
            +
              data.tar.gz: de799bd372c085ec0c8bded02d0731eb376fc441
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 454f8b4ff3d4f0cecebccfb31cacb60054987cd78ec1616c756677a7e7e324d83eccb877f9c4b4e65ea18b8a650b9e9b3bd5096f69c0660c6ccf1017e350aa20
         | 
| 7 | 
            +
              data.tar.gz: 519698ac22164db0b00e8f95dfcf499df299e5cc57c2eae67c6896e02416bd096ad547f7d3583489987fa2182005bf23e7d4f61f913ff5fb71e9dc3624541c2b
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/lib/drillbit.rb
    CHANGED
    
    
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'drillbit/resource/naming'
         | 
| 3 4 | 
             
            require 'drillbit/resource/model'
         | 
| 4 5 |  | 
| @@ -14,8 +15,8 @@ module  AuthorizableResource | |
| 14 15 | 
             
                def authorizer_class
         | 
| 15 16 | 
             
                  @authorizer_class ||= "#{authorizer_prefix}" \
         | 
| 16 17 | 
             
                                        "Authorizers::" \
         | 
| 17 | 
            -
                                        "#{resource_class_name}" | 
| 18 | 
            -
             | 
| 18 | 
            +
                                        "#{resource_class_name}"
         | 
| 19 | 
            +
                                          .constantize
         | 
| 19 20 | 
             
                rescue NameError
         | 
| 20 21 | 
             
                  'Drillbit::Authorizers::Query'.constantize
         | 
| 21 22 | 
             
                end
         | 
| @@ -24,8 +25,8 @@ module  AuthorizableResource | |
| 24 25 | 
             
                  @authorizer_scope_class ||= "#{authorizer_prefix}" \
         | 
| 25 26 | 
             
                                              "Authorizers::" \
         | 
| 26 27 | 
             
                                              "#{resource_class_name}" \
         | 
| 27 | 
            -
                                              "::Scope" | 
| 28 | 
            -
             | 
| 28 | 
            +
                                              "::Scope"
         | 
| 29 | 
            +
                                                .constantize
         | 
| 29 30 | 
             
                rescue NameError
         | 
| 30 31 | 
             
                  'Drillbit::Authorizers::Scope'.constantize
         | 
| 31 32 | 
             
                end
         | 
| @@ -34,8 +35,8 @@ module  AuthorizableResource | |
| 34 35 | 
             
                  @authorizer_resource_params_class ||= "#{authorizer_prefix}" \
         | 
| 35 36 | 
             
                                                        "Authorizers::" \
         | 
| 36 37 | 
             
                                                        "#{resource_class_name}" \
         | 
| 37 | 
            -
                                                        "::ResourceParameters" | 
| 38 | 
            -
             | 
| 38 | 
            +
                                                        "::ResourceParameters"
         | 
| 39 | 
            +
                                                          .constantize
         | 
| 39 40 | 
             
                rescue NameError
         | 
| 40 41 | 
             
                  'Drillbit::Authorizers::Parameters::Resource'.constantize
         | 
| 41 42 | 
             
                end
         | 
| @@ -44,8 +45,8 @@ module  AuthorizableResource | |
| 44 45 | 
             
                  @authorizer_filtering_params_class ||= "#{authorizer_prefix}" \
         | 
| 45 46 | 
             
                                                         "Authorizers::" \
         | 
| 46 47 | 
             
                                                         "#{resource_class_name}::" \
         | 
| 47 | 
            -
                                                         "FilteringParameters" | 
| 48 | 
            -
             | 
| 48 | 
            +
                                                         "FilteringParameters"
         | 
| 49 | 
            +
                                                           .constantize
         | 
| 49 50 | 
             
                rescue NameError
         | 
| 50 51 | 
             
                  'Drillbit::Authorizers::Parameters::Filtering'.constantize
         | 
| 51 52 | 
             
                end
         | 
| @@ -54,8 +55,8 @@ module  AuthorizableResource | |
| 54 55 | 
             
                  @authorizer_inclusions_params_class ||= "#{authorizer_prefix}" \
         | 
| 55 56 | 
             
                                                          "Authorizers::" \
         | 
| 56 57 | 
             
                                                          "#{resource_class_name}::" \
         | 
| 57 | 
            -
                                                          "InclusionParameters" | 
| 58 | 
            -
             | 
| 58 | 
            +
                                                          "InclusionParameters"
         | 
| 59 | 
            +
                                                            .constantize
         | 
| 59 60 | 
             
                rescue NameError
         | 
| 60 61 | 
             
                  'Drillbit::Authorizers::Parameters::Inclusions'.constantize
         | 
| 61 62 | 
             
                end
         | 
| @@ -82,50 +83,50 @@ module  AuthorizableResource | |
| 82 83 | 
             
              end
         | 
| 83 84 |  | 
| 84 85 | 
             
              def authorizer
         | 
| 85 | 
            -
                @authorizer ||= self | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 86 | 
            +
                @authorizer ||= self
         | 
| 87 | 
            +
                                  .class
         | 
| 88 | 
            +
                                  .authorizer_class
         | 
| 89 | 
            +
                                  .new(action:   action_name,
         | 
| 90 | 
            +
                                       token:    token,
         | 
| 91 | 
            +
                                       user:     authorized_user,
         | 
| 92 | 
            +
                                       issuer:   authorized_issuer,
         | 
| 93 | 
            +
                                       params:   authorized_params,
         | 
| 94 | 
            +
                                       resource: authorized_resource)
         | 
| 94 95 | 
             
              end
         | 
| 95 96 |  | 
| 96 97 | 
             
              def authorized_scope
         | 
| 97 | 
            -
                @authorized_scope ||= self | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 98 | 
            +
                @authorized_scope ||= self
         | 
| 99 | 
            +
                                        .class
         | 
| 100 | 
            +
                                        .authorizer_scope_class
         | 
| 101 | 
            +
                                        .new(action:     action_name,
         | 
| 102 | 
            +
                                             token:      token,
         | 
| 103 | 
            +
                                             user:       authorized_user,
         | 
| 104 | 
            +
                                             issuer:     authorized_issuer,
         | 
| 105 | 
            +
                                             params:     authorized_params,
         | 
| 106 | 
            +
                                             scope_root: authorized_scope_root)
         | 
| 107 | 
            +
                                        .call
         | 
| 107 108 | 
             
              end
         | 
| 108 109 |  | 
| 109 110 | 
             
              def authorized_inclusions
         | 
| 110 | 
            -
                @authorized_inclusions ||= self | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 111 | 
            +
                @authorized_inclusions ||= self
         | 
| 112 | 
            +
                                             .class
         | 
| 113 | 
            +
                                             .authorizer_inclusions_params_class
         | 
| 114 | 
            +
                                             .new(action: action_name,
         | 
| 115 | 
            +
                                                  token:  token,
         | 
| 116 | 
            +
                                                  user:   authorized_user,
         | 
| 117 | 
            +
                                                  issuer: authorized_issuer,
         | 
| 118 | 
            +
                                                  params: authorized_params)
         | 
| 119 | 
            +
                                             .call
         | 
| 119 120 | 
             
              end
         | 
| 120 121 |  | 
| 121 122 | 
             
              def authorized_params
         | 
| 122 | 
            -
                @authorized_params ||= authorizer_params_class | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 123 | 
            +
                @authorized_params ||= authorizer_params_class
         | 
| 124 | 
            +
                                         .new(action: action_name,
         | 
| 125 | 
            +
                                              token:  token,
         | 
| 126 | 
            +
                                              user:   authorized_user,
         | 
| 127 | 
            +
                                              issuer: authorized_issuer,
         | 
| 128 | 
            +
                                              params: params)
         | 
| 129 | 
            +
                                         .call
         | 
| 129 130 | 
             
              end
         | 
| 130 131 |  | 
| 131 132 | 
             
              # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
         | 
| @@ -133,20 +134,20 @@ module  AuthorizableResource | |
| 133 134 | 
             
              # rubocop:disable Metrics/BlockNesting
         | 
| 134 135 | 
             
              def authorized_attributes
         | 
| 135 136 | 
             
                @authorized_attributes ||= begin
         | 
| 136 | 
            -
                  attributes | 
| 137 | 
            -
             | 
| 138 | 
            -
             | 
| 137 | 
            +
                  attributes             = authorized_params
         | 
| 138 | 
            +
                                             .fetch(:data,       {})
         | 
| 139 | 
            +
                                             .fetch(:attributes, authorized_params.class.new)
         | 
| 139 140 |  | 
| 140 141 | 
             
                  relationships = authorized_params.class.new
         | 
| 141 142 |  | 
| 142 | 
            -
                  authorized_params | 
| 143 | 
            -
             | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 143 | 
            +
                  authorized_params
         | 
| 144 | 
            +
                    .fetch(:data,          {})
         | 
| 145 | 
            +
                    .fetch(:relationships, authorized_params.class.new)
         | 
| 146 | 
            +
                    .each_pair do |name, relationship|
         | 
| 146 147 | 
             
                    if relationship[:data].is_a?(Array)
         | 
| 147 148 | 
             
                      if (relationship[:data][0] || {})[:attributes]
         | 
| 148 149 | 
             
                        relationships["#{name}_attributes"] = relationship[:data].map do |datum|
         | 
| 149 | 
            -
                          attrs | 
| 150 | 
            +
                          attrs                             = datum[:attributes].dup
         | 
| 150 151 |  | 
| 151 152 | 
             
                          attrs.delete(:__id__)
         | 
| 152 153 | 
             
                          attrs[:id] = datum[:id] if datum[:id]
         | 
| @@ -177,18 +178,18 @@ module  AuthorizableResource | |
| 177 178 | 
             
              # rubocop:enable Metrics/AbcSize, Metrics/PerceivedComplexity
         | 
| 178 179 |  | 
| 179 180 | 
             
              def authorized_resource
         | 
| 180 | 
            -
                return  | 
| 181 | 
            +
                return if RESOURCE_COLLECTION_ACTIONS.include?(action_name)
         | 
| 181 182 |  | 
| 182 183 | 
             
                @authorized_resource ||= public_send(self.class.singular_resource_name)
         | 
| 183 184 | 
             
              end
         | 
| 184 185 |  | 
| 185 186 | 
             
              def authorized_collection
         | 
| 186 | 
            -
                return  | 
| 187 | 
            +
                return unless RESOURCE_COLLECTION_ACTIONS.include?(action_name)
         | 
| 187 188 |  | 
| 188 189 | 
             
                @authorized_collection ||= \
         | 
| 189 | 
            -
                  Resource::Model | 
| 190 | 
            -
             | 
| 191 | 
            -
             | 
| 190 | 
            +
                  Resource::Model
         | 
| 191 | 
            +
                    .new(resource:   public_send(self.class.plural_resource_name),
         | 
| 192 | 
            +
                         parameters: authorized_params)
         | 
| 192 193 | 
             
              end
         | 
| 193 194 |  | 
| 194 195 | 
             
              def authorizer_params_class
         | 
| @@ -201,8 +202,8 @@ module  AuthorizableResource | |
| 201 202 |  | 
| 202 203 | 
             
              def authorized_scope_root
         | 
| 203 204 | 
             
                @authorized_scope_root ||= "#{self.class.authorizer_prefix}" \
         | 
| 204 | 
            -
                                           "#{self.class.resource_class_name}" | 
| 205 | 
            -
             | 
| 205 | 
            +
                                           "#{self.class.resource_class_name}"
         | 
| 206 | 
            +
                                             .constantize
         | 
| 206 207 | 
             
              end
         | 
| 207 208 |  | 
| 208 209 | 
             
              def authorized_user
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'drillbit/authorizers/parameters'
         | 
| 3 4 |  | 
| 4 5 | 
             
            module  Drillbit
         | 
| @@ -35,9 +36,9 @@ class   Filtering < Authorizers::Parameters | |
| 35 36 | 
             
              end
         | 
| 36 37 |  | 
| 37 38 | 
             
              def add_filterable_parameter(name)
         | 
| 38 | 
            -
                param = params | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 39 | 
            +
                param = params
         | 
| 40 | 
            +
                          .fetch(:filter, {})
         | 
| 41 | 
            +
                          .fetch(name,    nil)
         | 
| 41 42 |  | 
| 42 43 | 
             
                if param.class == Array
         | 
| 43 44 | 
             
                  authorized_params[7][:filter][1][name] = []
         | 
| @@ -61,9 +62,9 @@ class   Filtering < Authorizers::Parameters | |
| 61 62 |  | 
| 62 63 | 
             
                return true if !override_if_admin && token.admin?
         | 
| 63 64 |  | 
| 64 | 
            -
                param = params | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 65 | 
            +
                param = params
         | 
| 66 | 
            +
                          .fetch(:filter, {})
         | 
| 67 | 
            +
                          .fetch(name,    nil)
         | 
| 67 68 |  | 
| 68 69 | 
             
                return if !param && only_when_present
         | 
| 69 70 |  | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'drillbit/authorizers/parameters'
         | 
| 3 4 | 
             
            require 'drillbit/errors/unpermitted_inclusions'
         | 
| 4 5 |  | 
| @@ -6,18 +7,14 @@ module  Drillbit | |
| 6 7 | 
             
            module  Authorizers
         | 
| 7 8 | 
             
            class   Parameters
         | 
| 8 9 | 
             
            class   Inclusions < Authorizers::Parameters
         | 
| 9 | 
            -
               | 
| 10 | 
            +
              attr_writer :authorized_inclusions
         | 
| 10 11 |  | 
| 11 | 
            -
              # rubocop:disable Style/RaiseArgs
         | 
| 12 12 | 
             
              def call
         | 
| 13 13 | 
             
                fail Errors::UnpermittedInclusions.new(inclusions: requested_inclusions) \
         | 
| 14 14 | 
             
                  if inclusion_differences.any?
         | 
| 15 15 |  | 
| 16 16 | 
             
                authorized_inclusions
         | 
| 17 17 | 
             
              end
         | 
| 18 | 
            -
              # rubocop:enable Style/RaiseArgs
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              protected
         | 
| 21 18 |  | 
| 22 19 | 
             
              def authorized_inclusions
         | 
| 23 20 | 
             
                @authorized_inclusions ||= []
         | 
| @@ -36,10 +33,10 @@ class   Inclusions < Authorizers::Parameters | |
| 36 33 | 
             
              end
         | 
| 37 34 |  | 
| 38 35 | 
             
              def requested_inclusions
         | 
| 39 | 
            -
                @requested_inclusions ||= params | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 36 | 
            +
                @requested_inclusions ||= params
         | 
| 37 | 
            +
                                            .fetch(:include, '')
         | 
| 38 | 
            +
                                            .split(',')
         | 
| 39 | 
            +
                                            .map(&:to_sym)
         | 
| 43 40 | 
             
              end
         | 
| 44 41 |  | 
| 45 42 | 
             
              def inclusion_differences
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'drillbit/authorizers/parameters'
         | 
| 3 4 |  | 
| 4 5 | 
             
            module  Drillbit
         | 
| @@ -34,10 +35,10 @@ class   Resource < Authorizers::Parameters | |
| 34 35 | 
             
              end
         | 
| 35 36 |  | 
| 36 37 | 
             
              def add_authorized_attribute(name)
         | 
| 37 | 
            -
                param = params | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 38 | 
            +
                param = params
         | 
| 39 | 
            +
                          .fetch(:data,       {})
         | 
| 40 | 
            +
                          .fetch(:attributes, {})
         | 
| 41 | 
            +
                          .fetch(name,        nil)
         | 
| 41 42 |  | 
| 42 43 | 
             
                if param.class == Array
         | 
| 43 44 | 
             
                  authorized_params[7][:data][2][:attributes][0][name] = []
         | 
| @@ -54,17 +55,17 @@ class   Resource < Authorizers::Parameters | |
| 54 55 |  | 
| 55 56 | 
             
              # rubocop:disable Metrics/AbcSize
         | 
| 56 57 | 
             
              def add_authorized_relationship(name, embedded_attributes: [])
         | 
| 57 | 
            -
                param    = params | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
                first    = params | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 58 | 
            +
                param    = params
         | 
| 59 | 
            +
                             .fetch(:data,          {})
         | 
| 60 | 
            +
                             .fetch(:relationships, {})
         | 
| 61 | 
            +
                             .fetch(name,           {})
         | 
| 62 | 
            +
                             .fetch(:data,          nil)
         | 
| 63 | 
            +
                first    = params
         | 
| 64 | 
            +
                             .fetch(:data,          {})
         | 
| 65 | 
            +
                             .fetch(:relationships, {})
         | 
| 66 | 
            +
                             .fetch(name,           {})
         | 
| 67 | 
            +
                             .fetch(:data,          [])
         | 
| 68 | 
            +
                             .first || {}
         | 
| 68 69 | 
             
                embedded = first.fetch(:attributes, nil)
         | 
| 69 70 |  | 
| 70 71 | 
             
                if param.nil?
         | 
| @@ -100,10 +101,10 @@ class   Resource < Authorizers::Parameters | |
| 100 101 |  | 
| 101 102 | 
             
                return true if !override_if_admin && token.admin?
         | 
| 102 103 |  | 
| 103 | 
            -
                param = params | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 104 | 
            +
                param = params
         | 
| 105 | 
            +
                          .fetch(:data,       {})
         | 
| 106 | 
            +
                          .fetch(:attributes, {})
         | 
| 107 | 
            +
                          .fetch(name,        nil)
         | 
| 107 108 |  | 
| 108 109 | 
             
                return if !param && only_when_present
         | 
| 109 110 |  | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'drillbit/utilities/string'
         | 
| 3 4 |  | 
| 4 5 | 
             
            module  Drillbit
         | 
| @@ -43,14 +44,14 @@ class   Scope | |
| 43 44 | 
             
              private
         | 
| 44 45 |  | 
| 45 46 | 
             
              def scope_user_id
         | 
| 46 | 
            -
                @scope_user_id ||= params | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 47 | 
            +
                @scope_user_id ||= params
         | 
| 48 | 
            +
                                     .fetch(:filter, {})
         | 
| 49 | 
            +
                                     .fetch(user_underscored_class_name, nil)
         | 
| 49 50 | 
             
              end
         | 
| 50 51 |  | 
| 51 52 | 
             
              def user_underscored_class_name
         | 
| 52 53 | 
             
                @user_underscored_class_name ||= begin
         | 
| 53 | 
            -
                  base_user_class_name | 
| 54 | 
            +
                  base_user_class_name         = user.class.name[/([^:]+)\z/, 1]
         | 
| 54 55 |  | 
| 55 56 | 
             
                  Utilities::String.underscore(base_user_class_name).downcase
         | 
| 56 57 | 
             
                end
         | 
| @@ -1,22 +1,20 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            module  Drillbit
         | 
| 3 4 | 
             
              class Configuration
         | 
| 4 | 
            -
                attr_writer  | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
                attr_accessor \
         | 
| 19 | 
            -
                  :application_name
         | 
| 5 | 
            +
                attr_writer :allowed_api_subdomains,
         | 
| 6 | 
            +
                            :allowed_subdomains,
         | 
| 7 | 
            +
                            :available_token_roles,
         | 
| 8 | 
            +
                            :default_api_version,
         | 
| 9 | 
            +
                            :default_token_audience,
         | 
| 10 | 
            +
                            :default_token_expiration_in_minutes,
         | 
| 11 | 
            +
                            :default_token_issuer,
         | 
| 12 | 
            +
                            :default_token_roles,
         | 
| 13 | 
            +
                            :default_token_subject,
         | 
| 14 | 
            +
                            :token_private_key,
         | 
| 15 | 
            +
                            :token_type
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                attr_accessor :application_name
         | 
| 20 18 |  | 
| 21 19 | 
             
                def to_h
         | 
| 22 20 | 
             
                  {
         |