class Arvados::V1::VirtualMachinesController < ApplicationController
skip_before_filter :find_object_by_uuid, :only => :get_all_logins
- skip_before_filter(:require_auth_scope_all,
- :only => [:logins, :get_all_logins])
+ skip_before_filter :render_404_if_no_object, :only => :get_all_logins
before_filter(:admin_required,
:only => [:logins, :get_all_logins])
- before_filter(:require_auth_scope_for_get_all_logins,
- :only => [:logins, :get_all_logins])
def logins
get_all_logins
vm.login_permissions.each do |perm|
user_uuid = perm.tail_uuid
@users[user_uuid].andand.authorized_keys.andand.each do |ak|
- username = perm.properties.andand['username']
- if username
+ unless perm.properties['username'].blank?
@response << {
- username: username,
+ username: perm.properties['username'],
hostname: vm.hostname,
+ groups: (perm.properties["groups"].to_a rescue []),
public_key: ak.public_key,
user_uuid: user_uuid,
virtual_machine_uuid: vm.uuid,
end
end
end
- render json: { kind: "arvados#HashList", items: @response }
- end
-
- protected
-
- def require_auth_scope_for_get_all_logins
- if @object
- # Client wants all logins for a single VM.
- require_auth_scope(['all', arvados_v1_virtual_machine_url(@object.uuid)])
- else
- # ...for a non-existent VM, or all VMs.
- require_auth_scope(['all'])
- end
+ send_json kind: "arvados#HashList", items: @response
end
end