Class: ForestLiana::PermissionsGetter

Inherits:
Object
  • Object
show all
Defined in:
app/services/forest_liana/permissions_getter.rb

Class Method Summary collapse

Class Method Details

.get_permissions_api_routeObject



4
5
6
# File 'app/services/forest_liana/permissions_getter.rb', line 4

def get_permissions_api_route
  '/liana/v3/permissions'
end

.get_permissions_for_rendering(rendering_id, rendering_specific_only: false) ⇒ Object

Permission format example: collections =>

{model_name => {
  collection => {
    browseEnabled => true,
    readEnabled => true,
    editEnabled => true,
    addEnabled => true,
    deleteEnabled => true,
    exportEnabled => true,
  },
  actions => {
    action_name => {
      triggerEnabled => true,
    },
  },
},

}, rederings => {

{rendering_id} => {
    {collection_id} => {
      scope => {
        dynamicScopesValues => {},
        filter => {}
      }
    }
  }
}

} With ‘rendering_specific_only` this returns only the permissions related data specific to the provided rendering For now this only includes scopes



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/services/forest_liana/permissions_getter.rb', line 39

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_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