refs #10078
[arvados.git] / apps / workbench / app / controllers / virtual_machines_controller.rb
index 9ccbfa68219eaa8fd3a5348365db3e795b9eb85a..73231f8cc09023ef13006fa6ad3e910d8881e874 100644 (file)
@@ -1,2 +1,32 @@
 class VirtualMachinesController < ApplicationController
+  def index
+    @objects ||= model_class.all
+    @vm_logins = {}
+    if @objects.andand.first
+      Link.where(tail_uuid: current_user.uuid,
+                 head_uuid: @objects.collect(&:uuid),
+                 link_class: 'permission',
+                 name: 'can_login').
+        each do |perm_link|
+        if perm_link.properties.andand[:username]
+          @vm_logins[perm_link.head_uuid] ||= []
+          @vm_logins[perm_link.head_uuid] << perm_link.properties[:username]
+        end
+      end
+      @objects.each do |vm|
+        vm.current_user_logins = @vm_logins[vm.uuid].andand.compact || []
+      end
+    end
+    super
+  end
+
+  def webshell
+    return render_not_found if not Rails.configuration.shell_in_a_box_url
+    @webshell_url = Rails.configuration.shell_in_a_box_url % {
+      uuid: @object.uuid,
+      hostname: @object.hostname,
+    }
+    render layout: false
+  end
+
 end