On 27 Mar 2010, at 13:01, J. Shirley wrote:
The approach I take, and recommend, is to use Chained for this (though
on an existing application it may be too late).

You can setup chains for auth required that redirects as desired, then
anything that doesn't need authentication can either tie to a
mid-point action that doesn't (for logging?) or simply chain to ("/").
CatalystX::SimpleLogin simply chains to "/" (See
http://cpansearch.perl.org/src/BOBTFISH/CatalystX-SimpleLogin-0.09/lib/CatalystX/SimpleLogin/Controller/Login.pm)
to not get caught up on any midpoint interceptions, but this is
overridable via configuration.

CatalystX::SimpleLogin::Controller::Login provides chained start points for you to chain everything off of.

These are:

/login/required
and
/login/not_required

In this case, where you want to add additional logic to the /login/ required case, you want to make a MyApp::Controller::Login which subclasses CatalystX::SimpleLogin::Controller::Login, remove CatalystX::SimpleLogin from your plugin list (as this merely serves to inject the default controller you have overridden), and add a method modifier to the 'required' method in your code to implement your 'if condition, redirect user' logic.

This approach, as J noted, is of course predicated on the fact that you have based the entire authenticated portion of your application off of the chain base provided. :_)

Cheers
t0m

P.S. I really haven't had enough tuits to give CX::SimpleLogin the love (or docs) it deserves since I talked about it at LPW last year. If anyone fancies stepping up to the plate and taking over maintainership (or generally just helping add docs to what is already there), then you'd be extremely welcome..


_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to