- skip_before_filter :find_object_by_uuid, only:
- [:activate, :current, :system, :setup, :merge]
- skip_before_filter :render_404_if_no_object, only:
- [:activate, :current, :system, :setup, :merge]
- before_filter :admin_required, only: [:setup, :unsetup, :update_uuid]
+ skip_before_action :find_object_by_uuid, only:
+ [:activate, :current, :system, :setup, :merge, :batch_update]
+ skip_before_action :render_404_if_no_object, only:
+ [:activate, :current, :system, :setup, :merge, :batch_update]
+ before_action :admin_required, only: [:setup, :unsetup, :update_uuid, :batch_update]
+
+ # Internal API used by controller to update local cache of user
+ # records from LoginCluster.
+ def batch_update
+ @objects = []
+ params[:updates].andand.each do |uuid, attrs|
+ begin
+ u = User.find_or_create_by(uuid: uuid)
+ rescue ActiveRecord::RecordNotUnique
+ retry
+ end
+ needupdate = {}
+ nullify_attrs(attrs).each do |k,v|
+ if !v.nil? && u.send(k) != v
+ needupdate[k] = v
+ end
+ end
+ if needupdate.length > 0
+ u.update_attributes!(needupdate)
+ end
+ @objects << u
+ end
+ @offset = 0
+ @limit = -1
+ render_list
+ end