Sha256: 98bea71435417d34a1ea18503c9d7c17331c1e2d3e1566833d10452f10ededa1

Contents?: true

Size: 2 KB

Versions: 30

Compression:

Stored size: 2 KB

Contents

module ForestLiana
  class PermissionsGetter
    class << PermissionsGetter
      def get_permissions_api_route
        '/liana/v3/permissions'
      end

      # Permission format example:
      # collections => {
      #   {model_name} => {
      #     collection => {
      #       browseEnabled => true,
      #       readEnabled => true,
      #       editEnabled => true,
      #       addEnabled => true,
      #       deleteEnabled => true,
      #       exportEnabled => true,
      #     },
      #     actions => {
      #       {action_name} => {
      #         triggerEnabled => true,
      #       },
      #     },
      #   },
      # },
      # renderings => {
      #   {rendering_id} => {
      #       {collection_id} => {
      #         segments => ['query1', 'query2']
      #       }
      #     }
      #   }
      # }
      # With `rendering_specific_only` this returns only the permissions related data specific to the provided rendering
      # For now this only includes scopes (but scopes are not used anymore in permissions)
      def get_permissions_for_rendering(rendering_id, rendering_specific_only: false)
        begin
          query_parameters = { 'renderingId' => rendering_id }
          query_parameters['renderingSpecificOnly'] = rendering_specific_only if rendering_specific_only

          api_route = get_permissions_api_route
          response = ForestLiana::ForestApiRequester.get(api_route, query: query_parameters)

          if response.is_a?(Net::HTTPOK)
            JSON.parse(response.body)
          else
            raise "Forest API returned an #{ForestLiana::Errors::HTTPErrorHelper.format(response)}"
          end
        rescue => exception
          FOREST_REPORTER.report exception
          FOREST_LOGGER.error 'Cannot retrieve the permissions from the Forest server.'
          FOREST_LOGGER.error 'Which was caused by:'
          ForestLiana::Errors::ExceptionHelper.recursively_print(exception, margin: ' ', is_error: true)
          nil
        end
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
forest_liana-7.8.2 app/services/forest_liana/permissions_getter.rb
forest_liana-7.8.1 app/services/forest_liana/permissions_getter.rb
forest_liana-7.8.0 app/services/forest_liana/permissions_getter.rb
forest_liana-7.7.3 app/services/forest_liana/permissions_getter.rb
forest_liana-7.7.2 app/services/forest_liana/permissions_getter.rb
forest_liana-7.7.1 app/services/forest_liana/permissions_getter.rb
forest_liana-7.7.0 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.14 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.13 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.12 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.11 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.10 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.9 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.8 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.7 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.6 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.5 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.4 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.3 app/services/forest_liana/permissions_getter.rb
forest_liana-7.6.2 app/services/forest_liana/permissions_getter.rb