On Fri, 2009-10-30 at 16:22 -0400, Brad Van Sickle wrote:

> I see what your problem is now..
> (code snipped)        
> It seemed a little hackish and messy to me at the time, but it was the 
> best I could think of.  There probably is a much better way.   Let me 
> know what method you end up going with.
> 

Here is what I found to be suitable based on Jason Purdy's suggestion.
DISCLAMER: I am not a very knowledgeable perl programmer - so
suggestions to improve it would be deeply appreciated. This is tested
code;

I have two run-modes 'login' and 'logout' used in the usual
CAP::Authentication style. Here is my prerun in the super-class:

sub cgiapp_prerun {
        my $app = shift;
        my $rm = shift;
        return if ($rm eq 'login') || ($rm eq 'logout');
        my $set_status = sub {
                my ($c, $ht_params, $tmpl_params, $tmpl_file) = @_;
                %$tmpl_params = (
                        USERNAME => $app->authen->username,
                        LASTLOGIN => $app->authen->last_login,
                        THISURL => $app->query->url,
                );
        };
        $app->add_callback('load_tmpl', $set_status);
}

And here is my template fragment embedded inside every page:

<p class="authentication">
        <!-- TMPL_IF NAME=USERNAME -->
        Logged In As: <!-- TMPL_VAR NAME=USERNAME --> (<a
href="index.cgi?authen_logout=1">Logout</a>)<br />
        Last Login: <!-- TMPL_VAR NAME=LASTLOGIN -->
        <!-- TMPL_ELSE -->
        <form  id="loginform" name="loginform" method="post" action="<!--
TMPL_VAR NAME=THISURL -->">
                <p>
                        <!-- TMPL_IF NAME=ATTEMPTS -->
                                Username or Password is Incorrect. Please enter 
the Username and
Password assigned to you by the Administrator.
                                (Attempt #: <!-- TMPL_VAR NAME=ATTEMPTS -->)
                        <!-- /TMPL_IF -->
                        <label for="authen_username"><em>*</em>Username:</label>
                        <input class="textInput" tabindex="1" type="text"
name="authen_username" size="20" value="" /><br />
                        <label for="authen_password"><em>*</em>Password:</label>
                        <input class="textInput" tabindex="2" type="password"
name="authen_password" size="20" /><br />
                        <div class="submitblock"><input class="primaryAction" 
tabindex="4"
type="submit" name="authen_loginbutton" value="Sign In"
class="button" /> or <a href="#">Register</a></div>
                </p>
                <input type="hidden" name="destination" value="<!-- TMPL_VAR
NAME=THISURL -->" />
                <input type="hidden" name="rm" value="authen_login" />
        </form>
        <!-- /TMPL_IF -->       
</p>

Any suggestions would be welcome and deeply appreciated!



#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to