<br><font size=2 face="sans-serif">Hi,</font>
<br><font size=2 face="sans-serif"> After much effort to learn the intricacies of RT, I have tried to implement an external authentication by the use of cookies. I say tried because it doen't seem to work. Let me explain what I have done so far.</font>
<br><font size=2 face="sans-serif">-have set a cookie in my web-site which stores the user name, so when user clicks on rt link, the user should be created in rt db</font>
<br><font size=2 face="sans-serif">-have added a line in RT_Siteconfig.pm Set($WebExternalAuth, 1);</font>
<br><font size=2 face="sans-serif">-have modified a few lines and commented out a few in share/html/autohandler to make use of cookies.</font>
<br><font size=2 face="sans-serif">But after this , I fail to understand why the user is not being created in the database. Can anyone help me please? </font>
<br><font size=2 face="sans-serif">Thanks,<br>
Parimala.</font>
<br>
<br>
<br><font size=2 face="sans-serif"><%INIT></font>
<br><font size=2 face="sans-serif">local *session;</font>
<br><font size=2 face="sans-serif">Encode::_utf8_on($ARGS{$_}) foreach (keys %ARGS);</font>
<br>
<br><font size=2 face="sans-serif">use CGI qw(standard);</font>
<br><font size=2 face="sans-serif">use CGI::Cookie;</font>
<br>
<br><font size=2 face="sans-serif">if ($ARGS{'Debug'}) {</font>
<br><font size=2 face="sans-serif">        require Time::HiRes;</font>
<br><font size=2 face="sans-serif">        $m->{'rt_base_time'} = [Time::HiRes::gettimeofday()];</font>
<br><font size=2 face="sans-serif">        </font>
<br><font size=2 face="sans-serif">}</font>
<br><font size=2 face="sans-serif">else {</font>
<br><font size=2 face="sans-serif">        $m->{'rt_base_time'} = time;</font>
<br><font size=2 face="sans-serif">}</font>
<br><font size=2 face="sans-serif">$m->comp('/Elements/SetupSessionCookie');</font>
<br>
<br><font size=2 face="sans-serif">unless ($session{'CurrentUser'} && $session{'CurrentUser'}->Id) {</font>
<br><font size=2 face="sans-serif">    $session{'CurrentUser'} = RT::CurrentUser->new();</font>
<br><font size=2 face="sans-serif">}</font>
<br>
<br><font size=2 face="sans-serif"># Set the proper encoding for the current language handle</font>
<br><font size=2 face="sans-serif">$r->content_type("text/html; charset=utf-8");</font>
<br>
<br><font size=2 face="sans-serif"># If it's a noauth file, don't ask for auth.</font>
<br><font size=2 face="sans-serif">if ($m->base_comp->path =~ '^/+NoAuth/' ||</font>
<br><font size=2 face="sans-serif">    $m->base_comp->path =~ '^/+REST/\d+\.\d+/NoAuth/')</font>
<br><font size=2 face="sans-serif">{</font>
<br><font size=2 face="sans-serif">    $m->call_next();</font>
<br><font size=2 face="sans-serif">    $m->abort();</font>
<br><font size=2 face="sans-serif">}</font>
<br>
<br><font size=2 face="sans-serif"># If RT is configured for external auth, let's get REMOTE_USER</font>
<br><font size=2 face="sans-serif">#elsif ($RT::WebExternalAuth and length($ENV{'REMOTE_USER'})) {</font>
<br><font size=2 face="sans-serif">elsif ($RT::WebExternalAuth) {</font>
<br><font size=2 face="sans-serif">    my $orig_user = $user;</font>
<br>
<br><font size=2 face="sans-serif">#    $user = $ENV{'REMOTE_USER'};</font>
<br><font size=2 face="sans-serif">    my %cookies = fetch CGI::Cookie;</font>
<br><font size=2 face="sans-serif">    my $name = $cookies{'user'}->value;</font>
<br><font size=2 face="sans-serif">    $user = $name;</font>
<br>
<br><font size=2 face="sans-serif">    $session{'CurrentUser'} = RT::CurrentUser->new();</font>
<br><font size=2 face="sans-serif">    my $load_method = $RT::WebExternalGecos ? 'LoadByGecos' : 'Load';</font>
<br><font size=2 face="sans-serif">    </font>
<br><font size=2 face="sans-serif">    if ($^O eq 'MSWin32' and $RT::WebExternalGecos) {</font>
<br><font size=2 face="sans-serif">            my $NodeName = Win32::NodeName();</font>
<br><font size=2 face="sans-serif">            $user =~ s/^\Q$NodeName\E\\//i;</font>
<br><font size=2 face="sans-serif">    }</font>
<br>
<br><font size=2 face="sans-serif">    $session{'CurrentUser'}->$load_method($user);</font>
<br>
<br><font size=2 face="sans-serif">    if ($RT::WebExternalAuto and !$session{'CurrentUser'}->Id() ) {</font>
<br><font size=2 face="sans-serif">        # Create users on-the-fly with default attributes</font>
<br>
<br><font size=2 face="sans-serif">        my $UserObj = RT::User->new(RT::CurrentUser->new('root'));</font>
<br>
<br><font size=2 face="sans-serif">        my ($val, $msg) = $UserObj->Create(</font>
<br><font size=2 face="sans-serif">            %{ref($RT::AutoCreate) ? $RT::AutoCreate : {}},</font>
<br><font size=2 face="sans-serif">            Name         => $user,</font>
<br><font size=2 face="sans-serif">            Gecos         => $user,</font>
<br><font size=2 face="sans-serif">        );</font>
<br>
<br>
<br><font size=2 face="sans-serif">        if ($val) {</font>
<br><font size=2 face="sans-serif">            $UserObj->SetPrivileged(1);</font>
<br>
<br><font size=2 face="sans-serif">#            if ($^O !~ /^(?:riscos|MacOS|MSWin32|dos|os2)$/) {</font>
<br><font size=2 face="sans-serif">                # Populate fields with information from Unix /etc/passwd</font>
<br><font size=2 face="sans-serif">#</font>
<br><font size=2 face="sans-serif">#                my ($comments, $realname) = (getpwnam($user))[5, 6];</font>
<br><font size=2 face="sans-serif">#                $UserObj->SetComments($comments) if defined $comments;</font>
<br><font size=2 face="sans-serif">#                $UserObj->SetRealName($realname) if defined $realname;</font>
<br><font size=2 face="sans-serif">#            }</font>
<br><font size=2 face="sans-serif">#            elsif ($^O eq 'MSWin32' and eval 'use Net::AdminMisc; 1') {</font>
<br><font size=2 face="sans-serif">                # Populate fields with information from NT domain controller</font>
<br><font size=2 face="sans-serif">#            }</font>
<br>
<br><font size=2 face="sans-serif">            $session{'CurrentUser'}->Load($user);</font>
<br><font size=2 face="sans-serif">        }</font>
<br><font size=2 face="sans-serif">        else {</font>
<br><font size=2 face="sans-serif">            delete $session{'CurrentUser'};</font>
<br><font size=2 face="sans-serif">            $m->abort() unless $RT::WebFallbackToInternalAuth;</font>
<br><font size=2 face="sans-serif">            $m->comp('/Elements/Login', %ARGS, Error=> loc('Cannot create user: [_1]', $msg));</font>
<br><font size=2 face="sans-serif">        }</font>
<br><font size=2 face="sans-serif">    }</font>
<br>
<br><font size=2 face="sans-serif">    unless ( $session{'CurrentUser'}->Id() ) {</font>
<br><font size=2 face="sans-serif">        delete $session{'CurrentUser'};</font>
<br><font size=2 face="sans-serif">        $user = $orig_user;</font>
<br>
<br><font size=2 face="sans-serif">        if ( $RT::WebExternalOnly ) {  </font>
<br><font size=2 face="sans-serif">            $m->comp('/Elements/Login', %ARGS, Error=> loc('You are not an authorized user'));</font>
<br><font size=2 face="sans-serif">            $m->abort();</font>
<br><font size=2 face="sans-serif">        }</font>
<br><font size=2 face="sans-serif">    }</font>
<br><font size=2 face="sans-serif">}</font>
<br>
<br><font size=2 face="sans-serif">delete $session{'CurrentUser'}</font>
<br><font size=2 face="sans-serif">    unless $session{'CurrentUser'} and defined $session{'CurrentUser'}->Id;</font>
<br>
<br><font size=2 face="sans-serif"># If the user is logging in, let's authenticate</font>
<br><font size=2 face="sans-serif">if (!$session{'CurrentUser'} && defined ($user) && defined ($pass) ){</font>
<br><font size=2 face="sans-serif">    $session{'CurrentUser'} = RT::CurrentUser->new();</font>
<br><font size=2 face="sans-serif">    $session{'CurrentUser'}->Load($user);</font>
<br>
<br><font size=2 face="sans-serif">    if (!$session{'CurrentUser'}->id() ||</font>
<br><font size=2 face="sans-serif">        !$session{'CurrentUser'}->IsPassword($pass))</font>
<br><font size=2 face="sans-serif">    {</font>
<br><font size=2 face="sans-serif">        delete $session{'CurrentUser'};</font>
<br><font size=2 face="sans-serif">        $m->comp('/Elements/Login', %ARGS,</font>
<br><font size=2 face="sans-serif">                 Error => loc('Your username or password is incorrect'));</font>
<br><font size=2 face="sans-serif">        $m->abort();</font>
<br><font size=2 face="sans-serif">    }</font>
<br><font size=2 face="sans-serif">}</font>
<br><font size=2 face="sans-serif">  </font>
<br><font size=2 face="sans-serif"># If we've got credentials, let's serve the file up.</font>
<br><font size=2 face="sans-serif">if ( (defined $session{'CurrentUser'}) and </font>
<br><font size=2 face="sans-serif">     ( $session{'CurrentUser'}->Id) ) {</font>
<br><font size=2 face="sans-serif">    </font>
<br><font size=2 face="sans-serif">    # Process per-page global callbacks</font>
<br><font size=2 face="sans-serif">    $m->comp('/Elements/Callback', %ARGS);</font>
<br>
<br><font size=2 face="sans-serif">    # If the user isn't privileged, they can only see SelfService</font>
<br><font size=2 face="sans-serif">    if ((! $session{'CurrentUser'}->Privileged) and</font>
<br><font size=2 face="sans-serif">        ($m->base_comp->path !~ '^(/+)SelfService/') ) {</font>
<br><font size=2 face="sans-serif">        $m->comp('/SelfService/index.html');</font>
<br><font size=2 face="sans-serif">        $m->abort();</font>
<br><font size=2 face="sans-serif">    }</font>
<br><font size=2 face="sans-serif">    else {</font>
<br><font size=2 face="sans-serif">        $m->call_next();</font>
<br><font size=2 face="sans-serif">    }</font>
<br><font size=2 face="sans-serif">}</font>
<br>
<br><font size=2 face="sans-serif"># If we have no credentials</font>
<br><font size=2 face="sans-serif">else {</font>
<br><font size=2 face="sans-serif">    $m->comp('/Elements/Login', %ARGS);</font>
<br><font size=2 face="sans-serif">    $m->abort();</font>
<br><font size=2 face="sans-serif">}</font>
<br><font size=2 face="sans-serif"></%INIT></font>
<br><font size=2 face="sans-serif"><& /Elements/Footer, %ARGS &></font>
<br><font size=2 face="sans-serif"><%ARGS></font>
<br><font size=2 face="sans-serif">$user => undef</font>
<br><font size=2 face="sans-serif">$pass => undef</font>
<br><font size=2 face="sans-serif">$menu => undef</font>
<br><font size=2 face="sans-serif"></%ARGS></font>
<br>