7254: add groups to vm link.
authorradhika <radhika@curoverse.com>
Sat, 13 Jun 2015 00:26:28 +0000 (20:26 -0400)
committerradhika <radhika@curoverse.com>
Sat, 13 Jun 2015 00:26:28 +0000 (20:26 -0400)
apps/workbench/app/controllers/users_controller.rb
apps/workbench/app/views/users/_setup_popup.html.erb

index b6b9f7d9b6cc9759e842f00ccac95211a01cefcd..0b74977d0654d8dba0288ef6d016b44833578896 100644 (file)
@@ -211,17 +211,24 @@ class UsersController < ApplicationController
           setup_params[:vm_uuid] = params['vm_uuid']
         end
 
-        if User.setup setup_params
+        setup_resp = User.setup setup_params
+        if setup_resp
+          prev_groups = nil
+          setup_resp[:items].each do |item|
+            if item[:head_kind] == "arvados#virtualMachine"
+              prev_groups = item[:properties][:groups]
+              break
+            end
+          end
           if params[:groups]
-            new_groups = params[:groups].split(',').map(&:strip).compact.select{|i| !i.to_s.empty?}
-            prev_groups = params[:prev_groups].split(',').map(&:strip).compact.select{|i| !i.to_s.empty?}
+            new_groups = params[:groups].split(',').map(&:strip).select{|i| !i.empty?}
             if new_groups != prev_groups
-              can_login_perms = Link.where(tail_uuid: params[:user_email],
-                                           head_kind: 'arvados#user',
-                                           link_class: 'permission',
-                                           name: 'can_login')
-              if can_login_perms.any?
-                perm = can_login_perms.first
+              vm_login_perms = Link.where(tail_uuid: params['user_uuid'],
+                                          head_kind: 'arvados#virtualMachine',
+                                          link_class: 'permission',
+                                          name: 'can_login')
+              if vm_login_perms.any?
+                perm = vm_login_perms.first
                 props = perm.properties
                 props[:groups] = new_groups
                 perm.save!
@@ -346,15 +353,14 @@ class UsersController < ApplicationController
     end
 
     # oid login perm
-    can_login_perms = Link.where(tail_uuid: user.email,
+    oid_login_perms = Link.where(tail_uuid: user.email,
                                    head_kind: 'arvados#user',
                                    link_class: 'permission',
                                    name: 'can_login')
 
-    if can_login_perms.any?
-      perm_properties = can_login_perms.first.properties
-      current_selections[:identity_url_prefix] = perm_properties[:identity_url_prefix]
-      current_selections[:groups] = perm_properties[:groups].andand.join(', ')
+    if oid_login_perms.any?
+      prefix_properties = oid_login_perms.first.properties
+      current_selections[:identity_url_prefix] = prefix_properties[:identity_url_prefix]
     end
 
     # repo perm
@@ -377,8 +383,10 @@ class UsersController < ApplicationController
                               link_class: 'permission',
                               name: 'can_login')
     if vm_login_perms.any?
-      vm_uuid = vm_login_perms.first.head_uuid
+      vm_perm = vm_login_perms.first
+      vm_uuid = vm_perm.head_uuid
       current_selections[:vm_uuid] = vm_uuid
+      current_selections[:groups] = vm_perm.properties[:groups].andand.join(', ')
     end
 
     return current_selections
index 705d2d793b50c78787f81a711449fcbb64e82b0a..8e3b4c4a02f41c8c097cfa57312e7a96e43224eb 100644 (file)
@@ -64,8 +64,6 @@
       </div>
       <div class="groups-group">
         <label for="groups">Groups</label>
-        <input user_email="user_email" maxlength="250" name="user_email" type="hidden" value="<%=email%>">
-        <input prev_groups="prev_groups" maxlength="250" name="prev_groups" type="hidden" value="<%=groups%>">
         <input class="form-control" id="groups" maxlength="250" name="groups" type="text" value="<%=groups%>"
           title="Comma separated list of groups to which this user belongs">
       </div>