Deletion of a user #558

This commit is contained in:
Karel Picman 2016-08-25 15:54:48 +02:00
parent 08cad12de4
commit 732cef4317
2 changed files with 67 additions and 0 deletions

View File

@ -30,6 +30,7 @@ require 'redmine_dmsf/patches/acts_as_customizable'
require 'redmine_dmsf/patches/project_patch'
require 'redmine_dmsf/patches/project_tabs_extended'
require 'redmine_dmsf/patches/user_preference_patch'
require 'redmine_dmsf/patches/user_patch'
# Load up classes that make up our WebDAV solution ontop of DAV4Rack
require 'redmine_dmsf/webdav/base_resource'

View File

@ -0,0 +1,66 @@
# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require_dependency 'user'
module RedmineDmsf
module Patches
module UserPatch
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
before_destroy :remove_references
end
end
module InstanceMethods
def remove_references
return if self.id.nil?
substitute = User.anonymous
DmsfFileRevisionAccess.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfFileRevision.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfFile.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
DmsfFolder.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfFolder.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
DmsfLink.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfLink.where(:deleted_by_user_id => id).update_all(:deleted_by_user_id => substitute.id)
DmsfLock.delete_all(:user_id => id)
DmsfWorkflowStepAction.where(:author_id => id).update_all(:author_id => substitute.id)
DmsfWorkflowStepAssignment.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfWorkflowStep.where(:user_id => id).update_all(:user_id => substitute.id)
DmsfWorkflow.where(:author_id => id).update_all(:author_id => substitute.id)
end
end
end
end
end
# Apply patch
Rails.configuration.to_prepare do
unless Project.included_modules.include?(RedmineDmsf::Patches::UserPatch)
User.send(:include, RedmineDmsf::Patches::UserPatch)
end
end