3178: Merge bogus _setup_requires_parameters into existing class method.
[arvados.git] / services / api / app / controllers / arvados / v1 / users_controller.rb
index 781bd882e72e28947acd09ac5a759db3a0625496..271299b6c97608c68b14d0500e86d779ba610b3d 100644 (file)
@@ -1,4 +1,6 @@
 class Arvados::V1::UsersController < ApplicationController
+  accept_attribute_as_json :prefs, Hash
+
   skip_before_filter :find_object_by_uuid, only:
     [:activate, :current, :system, :setup]
   skip_before_filter :render_404_if_no_object, only:
@@ -116,8 +118,33 @@ class Arvados::V1::UsersController < ApplicationController
 
   def self._setup_requires_parameters
     {
-      send_notification_email: { type: 'boolean', required: true },
+      user: {
+        type: 'object', required: false
+      },
+      openid_prefix: {
+        type: 'string', required: false
+      },
+      repo_name: {
+        type: 'string', required: false
+      },
+      vm_uuid: {
+        type: 'string', required: false
+      },
+      send_notification_email: {
+        type: 'boolean', required: false, default: false
+      },
     }
   end
 
+  def find_objects_for_index
+    if (action_name == "index") and (not @read_users.any? { |u| u.is_admin })
+      # Non-admin index returns very basic information about all active users.
+      # We ignore where and filters params to avoid leaking information.
+      @where = {}
+      @filters = []
+      @select = ["uuid", "is_active", "email", "first_name", "last_name"]
+      @objects = model_class.where(is_active: true)
+    end
+    super
+  end
 end