.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "RT::Extension::MergeUsers 3pm" .TH RT::Extension::MergeUsers 3pm "2021-02-27" "perl v5.32.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" RT::Extension::MergeUsers \- Merges two users into the same effective user .SH "RT VERSION" .IX Header "RT VERSION" Works with \s-1RT 4.0, 4.2, 4.4, 5.0.\s0 .SH "DESCRIPTION" .IX Header "DESCRIPTION" This \s-1RT\s0 extension adds a \*(L"Merge Users\*(R" box to the User Administration page, which allows you to merge the user you are currently viewing with another user on your \s-1RT\s0 instance. .PP It also adds \*(L"MergeInto\*(R" and \*(L"UnMerge\*(R" functions to the RT::User class, which allow you to programmatically accomplish the same thing from your code. .PP It also provides a version of CanonicalizeEmailAddress, which means that all e\-mail sent from secondary users is displayed as coming from the primary user. .SH "INSTALLATION" .IX Header "INSTALLATION" Be sure to also read \*(L"\s-1UPGRADING\*(R"\s0 if you are upgrading. .ie n .IP """perl Makefile.PL""" 4 .el .IP "\f(CWperl Makefile.PL\fR" 4 .IX Item "perl Makefile.PL" .PD 0 .ie n .IP """make""" 4 .el .IP "\f(CWmake\fR" 4 .IX Item "make" .ie n .IP """make install""" 4 .el .IP "\f(CWmake install\fR" 4 .IX Item "make install" .PD May need root permissions .IP "Edit your \fI/opt/rt5/etc/RT_SiteConfig.pm\fR" 4 .IX Item "Edit your /opt/rt5/etc/RT_SiteConfig.pm" If you are using \s-1RT 4.2\s0 or greater, add this line: .Sp .Vb 1 \& Plugin(\*(AqRT::Extension::MergeUsers\*(Aq); .Ve .Sp For \s-1RT 4.0,\s0 add this line: .Sp .Vb 1 \& Set(@Plugins, qw(RT::Extension::MergeUsers)); .Ve .Sp or add \f(CW\*(C`RT::Extension::MergeUsers\*(C'\fR to your existing \f(CW@Plugins\fR line. .IP "Clear your mason cache" 4 .IX Item "Clear your mason cache" .Vb 1 \& rm \-rf /opt/rt5/var/mason_data/obj .Ve .IP "Restart your webserver" 4 .IX Item "Restart your webserver" .SH "UPGRADING" .IX Header "UPGRADING" If you are upgrading from 0.03_01 or earlier, you must run \&\fIbin/rt\-update\-merged\-users\fR. This script will create MergedUsers Attributes so \s-1RT\s0 can know when you're looking at a user that other users have been merged into. If you don't run this script, you'll have issues unmerging users. It can be safely run multiple times, it will only create Attributes as needed. .SH "UTILITIES" .IX Header "UTILITIES" .SS "rt-clean-merged-users" .IX Subsection "rt-clean-merged-users" When a user with another user merged into it is shredded, the attributes on that user are also shredded, but the merged user will remain, along with attributes that may point to the now missing user id. This script cleans up attributes if the merged-into user record is now gone. These users will then be converted back to regular unmerged users. .SS "rt-merge-users" .IX Subsection "rt-merge-users" A command-line tool to merge one user into another .SH "CAVEATS" .IX Header "CAVEATS" .SS "RT::Shredder and Merged Users" .IX Subsection "RT::Shredder and Merged Users" Merging a user effectively makes it impossible to load the merged user directly. Attempting to access the old user resolves to the merged-into user. Because of this, MergeUsers has some extra code to help RT::Shredder clean up these merged records to avoid leaving merged user records in the \s-1DB\s0 while removing the user they were merged into. .PP When running RT::Shredder on a user record with other users merged into it, the merged users are Unmerged before the initial user record is shredded. There are two options to handle these newly unmerged users: .IP "1." 4 Re-run your shredder command with the same or similar options. The unmerged user records will now be accessible and, depending on your shredder options, they will likely be shredded on the second run. If you have multiple layers of merged users, you may need to run shredder multiple times. .IP "2." 4 MergeUsers will log the unmerged users at the \f(CW\*(C`info\*(C'\fR level so you can pull the user ids from the log and shred them manually. This is most likely to be useful if you are shredding one specific user (and all merged accounts). .SH "AUTHOR" .IX Header "AUTHOR" Best Practical Solutions, \s-1LLC\s0 .SH "BUGS" .IX Header "BUGS" All bugs should be reported via email to .PP .Vb 1 \& L .Ve .PP or via the web at .PP .Vb 1 \& L. .Ve .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" This software is Copyright (c) 2014\-2020 by Best Practical Solutions .PP This is free software, licensed under: .PP .Vb 1 \& The GNU General Public License, Version 2, June 1991 .Ve