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,
    },
  },
},

}, 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)



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

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