6254: add "groups" to user setup process; these comma separated groups entered in...
authorradhika <radhika@curoverse.com>
Fri, 12 Jun 2015 14:51:26 +0000 (10:51 -0400)
committerradhika <radhika@curoverse.com>
Fri, 12 Jun 2015 14:51:26 +0000 (10:51 -0400)
apps/workbench/app/controllers/users_controller.rb
apps/workbench/app/views/users/_setup_popup.html.erb

index f6d571157d02459f8450478ba42aee71c572e3e5..d657f926039e1b2dbd8130456242e909e617e16d 100644 (file)
@@ -212,6 +212,22 @@ class UsersController < ApplicationController
         end
 
         if User.setup setup_params
+          if params[:groups]
+            new_groups = params[:groups].split(',').map(&:strip).compact.select{|i| !i.to_s.empty?}
+            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
+              props = perm.properties
+              if new_groups != props[:groups]
+                props[:groups] = new_groups
+                perm.save!
+              end
+            end
+          end
+
           format.js
         else
           self.render_error status: 422
@@ -329,14 +345,15 @@ class UsersController < ApplicationController
     end
 
     # oid login perm
-    oid_login_perms = Link.where(tail_uuid: user.email,
+    can_login_perms = Link.where(tail_uuid: user.email,
                                    head_kind: 'arvados#user',
                                    link_class: 'permission',
                                    name: 'can_login')
 
-    if oid_login_perms.any?
-      prefix_properties = oid_login_perms.first.properties
-      current_selections[:identity_url_prefix] = prefix_properties[:identity_url_prefix]
+    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(', ')
     end
 
     # repo perm
index a1a664ce838115b875c460cd988d5260490430f1..fcc3322cb9abf7acca28cb973a4f9dd018b7651d 100644 (file)
       <% disable_url_prefix = identity_url_prefix != nil %>
       <% selected_repo = @current_selections[:repo_name] %>
       <% selected_vm = @current_selections[:vm_uuid] %>
+      <% groups = @current_selections[:groups] %>
 
       <input id="user_uuid" maxlength="250" name="user_uuid" type="hidden" value="<%=uuid%>">
       <div class="form-group">
-       <label for="email">Email</label>
+        <label for="email">Email</label>
         <% if disable_email %>
         <input class="form-control" id="email" maxlength="250" name="email" type="text" value="<%=email%>" disabled>
         <% else %>
         <label for="vm_uuid">Virtual Machine</label>
         <select class="form-control" name="vm_uuid">
           <option value="" <%= 'selected' unless selected_vm %>>
-           Choose One:
-         </option>
+            Choose One:
+          </option>
           <% @vms.each do |vm| %>
             <option value="<%=vm.uuid%>"
-                   <%= 'selected' if selected_vm == vm.uuid %>>
-             <%= vm.hostname %>
-           </option>
+              <%= 'selected' if selected_vm == vm.uuid %>>
+              <%= vm.hostname %>
+            </option>
           <% end %>
         </select>
       </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 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>
     </div>
 
     <div class="modal-footer">