diff --git a/packages/forest_admin_agent/lib/forest_admin_agent/routes/resources/list.rb b/packages/forest_admin_agent/lib/forest_admin_agent/routes/resources/list.rb index d2fc01c3e..41bbdde6b 100644 --- a/packages/forest_admin_agent/lib/forest_admin_agent/routes/resources/list.rb +++ b/packages/forest_admin_agent/lib/forest_admin_agent/routes/resources/list.rb @@ -5,6 +5,7 @@ module Routes module Resources class List < AbstractAuthenticatedRoute include ForestAdminDatasourceToolkit::Components::Query::ConditionTree + include ForestAdminDatasourceToolkit::Validations def setup_routes add_route('forest_list', 'get', '/:collection_name', ->(args) { handle_request(args) }) @@ -30,6 +31,8 @@ def handle_request(args = {}) segment: ForestAdminAgent::Utils::QueryStringParser.parse_segment(@collection, args) ) + ConditionTreeValidator.validate(filter.condition_tree, @collection) if filter.condition_tree + projection = ForestAdminAgent::Utils::QueryStringParser.parse_projection_with_pks(@collection, args) records = @collection.list(@caller, filter, projection) diff --git a/packages/forest_admin_agent/lib/forest_admin_agent/utils/context_variables.rb b/packages/forest_admin_agent/lib/forest_admin_agent/utils/context_variables.rb index d1e731b5e..785981d7c 100644 --- a/packages/forest_admin_agent/lib/forest_admin_agent/utils/context_variables.rb +++ b/packages/forest_admin_agent/lib/forest_admin_agent/utils/context_variables.rb @@ -29,9 +29,9 @@ def get_current_user_data(context_variable_key) end if context_variable_key.start_with?(USER_VALUE_TAG_PREFIX) + tag_key = context_variable_key[USER_VALUE_TAG_PREFIX.length..] user[:tags].each do |tag| - match_key = context_variable_key[USER_VALUE_TAG_PREFIX.length..] - return tag[match_key] if tag.key?(match_key) + return tag['value'] if tag['key'] == tag_key end end diff --git a/packages/forest_admin_agent/spec/lib/forest_admin_agent/routes/capabilities/collections_spec.rb b/packages/forest_admin_agent/spec/lib/forest_admin_agent/routes/capabilities/collections_spec.rb index 0d3b8165e..75fca5073 100644 --- a/packages/forest_admin_agent/spec/lib/forest_admin_agent/routes/capabilities/collections_spec.rb +++ b/packages/forest_admin_agent/spec/lib/forest_admin_agent/routes/capabilities/collections_spec.rb @@ -57,7 +57,10 @@ module Capabilities let(:args) do { headers: { 'HTTP_AUTHORIZATION' => bearer }, - params: { 'timezone' => 'Europe/Paris' } + params: { + 'collectionNames' => [], + 'timezone' => 'Europe/Paris' + } } end diff --git a/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_injector_spec.rb b/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_injector_spec.rb index 300566b99..8234c7f65 100644 --- a/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_injector_spec.rb +++ b/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_injector_spec.rb @@ -12,7 +12,7 @@ module Utils 'lastName' => 'Doe', 'fullName' => 'John Doe', 'email' => 'john.doe@domain.com', - 'tags' => [{ 'planet' => 'Death Star' }], + 'tags' => [{ 'key' => 'planet', 'value' => 'Death Star' }], 'roleId' => 1, 'permissionLevel' => 'admin' } @@ -89,7 +89,7 @@ module Utils { key: 'id', expected_value: user['id'] }, { key: 'permissionLevel', expected_value: user['permissionLevel'] }, { key: 'roleId', expected_value: user['roleId'] }, - { key: 'tags.planet', expected_value: user['tags'][0]['planet'] }, + { key: 'tags.planet', expected_value: user['tags'][0]['value'] }, { key: 'team.id', expected_value: team['id'] }, { key: 'team.name', expected_value: team['name'] } ].each do |value| diff --git a/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_spec.rb b/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_spec.rb index 598ef6c99..6ac7af465 100644 --- a/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_spec.rb +++ b/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/context_variables_spec.rb @@ -10,7 +10,7 @@ module Utils lastName: 'Doe', fullName: 'John Doe', email: 'johndoe@forestadmin.com', - tags: [{ 'foo' => 'bar' }], + tags: [{ 'key' => 'foo', 'value' => 'bar' }], roleId: 1, permissionLevel: 'admin' }