[rt-users] Auto creating user email addresses from CAS authenticated RT SelfService

Duncan Napier dgnapier at sfu.ca
Tue Jun 11 00:29:20 EDT 2013


OK ... I solved the problem. After some looking around and re-examining my old code, I found for RT 4.0.8, go to /lib in your "rt" directory (eg /var/rt or /usr/local/rt) so for me I edited in

/usr/local/rt/lib/RT/Interface/Web.pm

find

############### Start Code Fragment 

sub WebExternalAutoInfo {

my $user = shift;

 my %user_info;

 
# default to making Privileged users, even if they specify

# some other default Attributes

if ( !$RT::AutoCreate

|| ( ref($RT::AutoCreate) && not exists $RT::AutoCreate->{Privileged} ) )

{

$user_info{'Privileged'} = 1;

}

############## End Code Fragment

and add the line

$user_info{'EmailAddress'} = "$user\@mycompany.com";


############### Start Code Fragment 

 
  
sub WebExternalAutoInfo {

my $user = shift;

my %user_info;

$user_info{'EmailAddress'} = "$user\@mycompany.com";

# default to making Privileged users, even if they specify

# some other default Attributes

if ( !$RT::AutoCreate

|| ( ref($RT::AutoCreate) && not exists $RT::AutoCreate->{Privileged} ) )

{

$user_info{'Privileged'} = 1;

}

############## End Code Fragment

You may (?) also have to add 

 $user_info{'Privileged'} = 0;

along with 

$user_info{'EmailAddress'} = "$user\@mycompany.com";

if you want your newly-created user to be Unpriviliged, which is standard for RT SelfServe. I'm not sure what happens when you ask to autocreate priviliged (internal) users ... I believe in the case of RT_SiteConfig.pm to enable external authentication (like CAS or LDAP):

Set($WebExternalAuth , '1');
Set($WebFallbackToInternalAuth , '1');
Set($WebExternalGecos , undef);
Set($WebExternalAuto , '1');

And now for each new user, the field 'EmailAddress'is populated with "$user at mycompany.com"

Have fun with it, people!

                                             Duncan. 

----- Original Message -----
> Hello,
> 
> I am currently migrating from RT 3.4.5-2 (2006) on Fedora Core 4 to
> RT 4.0.8 on Centos 6.2. The reasons are many, including aging
> platform, move to virtualization etc.
> 
> The new RT, like the old one, does external authentication through
> CAS (Central Authentication Service). Basically users always
> initiate a support request through the RT SelfServe website by
> authenticating with single sign-on credentails (username, password).
> 
> The system generates a new user the first time the user logs in
> populates the "Identity" Username and "Unix login" Username from
> their login credentials. On the old system, loggin in for the first
> time also autogenerates an email by concatenating the "Identity"
> with the email domain suffix ("@mydomain.com").
> 
> So for example, person with ID newuser, logs in for the first time,
> and their Email field is populated with "newuser at mydomain.com", and
> nothing needs to be done from my end.
> 
> For some reason, it does not do this on the new system. I seem to
> recall some 7 years ago adding a hack to set this autocreation of
> the email field using the username. I have searched but can't find
> anything and searched through the code to see where/how it was
> implemented, but I am at a loss.
> 
> Does anyone know how this is done in RT 4.x? Other than putting it in
> manually, I haven't been able to figure out how to do this. Thanks
> in advance.
> 
> 
> 
> 

-- 

                                 Regards,

                                 Duncan.

-----------------------------------------------------------------------
Duncan Napier
duncan_napier at sfu.ca
http://www.sfu.ca/~dgnapier/
IT & Instrumentation Consultant
Dept of Molecular Biology and Biochemistry
Simon Fraser University

"It takes ten years to become good at being a kid. Then another ten years
to become good at not being a kid" - Larry Wall.




More information about the rt-users mailing list