10557: Always run user setup procedure when is_active becomes true.
[arvados.git] / services / api / app / models / user.rb
index b654b5a023071f1abe95400a3309964365c7e0af..c4a4f92d306617332e4adcfc4a75227bc3c43a5c 100644 (file)
@@ -20,6 +20,9 @@ class User < ArvadosModel
   before_update :verify_repositories_empty, :if => Proc.new { |user|
     user.username.nil? and user.username_changed?
   }
+  before_update :setup_on_activate, :if => Proc.new { |user|
+    ![system_user_uuid, anonymous_user_uuid].include?(user.uuid)
+  }
   before_create :check_auto_admin
   before_create :set_initial_username, :if => Proc.new { |user|
     user.username.nil? and user.email
@@ -461,6 +464,14 @@ class User < ArvadosModel
     end
   end
 
+  # Automatically setup if is_active flag turns on
+  def setup_on_activate
+    return if [system_user_uuid, anonymous_user_uuid].include?(self.uuid)
+    if is_active && (new_record? || is_active_changed?)
+      setup(openid_prefix: Rails.configuration.default_openid_prefix)
+    end
+  end
+
   # Automatically setup new user during creation
   def auto_setup_new_user
     setup(openid_prefix: Rails.configuration.default_openid_prefix)