fix editable User attributes
authorTom Clegg <tom@clinicalfuture.com>
Thu, 27 Jun 2013 16:04:25 +0000 (12:04 -0400)
committerTom Clegg <tom@clinicalfuture.com>
Thu, 27 Jun 2013 16:04:25 +0000 (12:04 -0400)
apps/workbench/app/models/arvados_base.rb
apps/workbench/app/models/user.rb
apps/workbench/app/views/users/index.html.erb

index a9f9a04a40a73b96d29e5fee9d202072a3c3cee4..6b8278d0ec5bee1c787218a25106567534de897f 100644 (file)
@@ -214,7 +214,7 @@ class ArvadosBase < ActiveRecord::Base
   end
 
   def editable?
-    (current_user and
+    (current_user and current_user.is_active and
      (current_user.is_admin or
       current_user.uuid == self.owner))
   end
@@ -222,10 +222,12 @@ class ArvadosBase < ActiveRecord::Base
   def attribute_editable?(attr)
     if "created_at modified_at modified_by_user modified_by_client updated_at".index(attr.to_s)
       false
-    elsif "uuid owner".index(attr.to_s)
-      current_user and current_user.is_admin
+    elsif not (current_user.andand.is_active)
+      false
+    elsif "uuid owner".index(attr.to_s) or current_user.is_admin
+      current_user.is_admin
     else
-      current_user and current_user.uuid == owner
+      current_user.uuid == self.owner or current_user.uuid == self.uuid
     end
   end
 
index 47b0af38a87d3c315051efe138fed1831174e8cb..782385fb0d88240211b02793cf9aa299249c45cd 100644 (file)
@@ -20,4 +20,8 @@ class User < ArvadosBase
   def full_name
     (self.first_name || "") + " " + (self.last_name || "")
   end
+
+  def attribute_editable?(attr)
+    (not (self.uuid.andand.match(/000000000000000$/) and self.is_admin)) and super(attr)
+  end
 end
index b9230fbd01bc00748276075ad23ac781e79171cf..926569d76990fe775c933b132bb0099377c4cf31 100644 (file)
@@ -32,9 +32,9 @@
       </td><td>
         <%= render_editable_attribute u, 'email' %>
       </td><td>
-        <%= render_editable_attribute u, 'is_active', u.is_active ? 'Active' : '', "data-type" => "select", "data-source" => '[{value:1,text:"Active"},{value:0,text:"No"}]' %>
+        <%= render_editable_attribute u, 'is_active', u.is_active ? 'Active' : 'No', "data-type" => "select", "data-source" => '[{value:1,text:"Active"},{value:0,text:"No"}]' %>
       </td><td>
-        <%= render_editable_attribute u, 'is_admin', u.is_admin ? 'Admin' : '', "data-type" => "select", "data-source" => '[{value:1,text:"admin"},{value:0,text:"No"}]' %>
+        <%= render_editable_attribute u, 'is_admin', u.is_admin ? 'Admin' : 'No', "data-type" => "select", "data-source" => '[{value:1,text:"admin"},{value:0,text:"No"}]' %>
       </td><td>
         <%= render_editable_attribute u, 'owner' %>
       </td><td>