> See what is going on -- C::A::P::Routes correctly thinks the runmode
> is ‘mainpage’ as per the URL. However, $self->get_current_runmode()
> returns ‘welcome’ in cgiapp_prerun(), and as a result, the mainpage is
> not protected. Now, it could be that C::A::P::Routes is firing *after*
> my cgiapp_prerun() protected_mode logic is run. To test that, I
> uncommented the #$self->prerun_mode('login'); line in cgiapp_prerun(),
> and lo and behold, the runmode is changed to login.

I agree with you assessment of where the problem is. 

> The remedy seems to be that once it has figured out the runmode
> correctly, C::A::P::Routes should set the value of
> $self->get_current_runmode() to it.
> 
> If I have diagnosed the problem correctly, please help me find a fix.
> If not, please help me diagnose correctly.

My suggestion for a fix is to see about getting the the routes prerun
before and your prerun behavior to trigger in the other order. 

<scratches head>

maybe this will help?: 

Instead of: 

    sub cgiapp_prerun { ...  }

Try

 __PACKAGE__->add_callback( prerun => 'my_prerun' );
 sub my_prerun { ...  }

I'm just guessing. You can also dump this to check the order
of what's registered.

    $self->{__INSTALLED_CALLBACKS}

    Mark

-- 
http://mark.stosberg.com/




#####  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