17154: Make sure most current user record is loaded.
[arvados.git] / apps / workbench / app / controllers / search_controller.rb
index 2b0ad7e57aac5bbf935caac978aad1c864439021..80f3ff117a583c3e6b96df76b08f6d75e5dc4cd9 100644 (file)
@@ -1,10 +1,38 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 class SearchController < ApplicationController
+  skip_before_action :ensure_arvados_api_exists
+
   def find_objects_for_index
-    @objects = Group.contents(limit: @limit, offset: @offset, filters: @filters)
+    search_what = Group
+    if params[:project_uuid]
+      # Special case for "search all things in project":
+      @filters = @filters.select do |attr, operator, operand|
+        not (attr == 'owner_uuid' and operator == '=')
+      end
+      # Special case for project_uuid is a user uuid:
+      if ArvadosBase::resource_class_for_uuid(params[:project_uuid]) == User
+        search_what = User.find params[:project_uuid]
+      else
+        search_what = Group.find params[:project_uuid]
+      end
+    end
+    @objects = search_what.contents(limit: @limit,
+                                    offset: @offset,
+                                    recursive: true,
+                                    count: 'none',
+                                    last_object_class: params["last_object_class"],
+                                    filters: @filters)
     super
   end
 
   def next_page_href with_params={}
-    super with_params.merge(last_object_class: @objects.last.class.to_s)
+    super with_params.merge(last_object_class: @objects.last.class.to_s,
+                            project_uuid: params[:project_uuid],
+                            recursive: true,
+                            count: 'none',
+                            filters: @filters.to_json)
   end
 end