>>>>> "Charlie" == Charlie Garrison <garri...@zeta.org.au> writes:
Charlie> I've never bothered to find out why, but I've run into Charlie> situations where $c->user_exists returns true and $c->user Charlie> returns false. I just check for defined($c->user) instead Charlie> and that solved it for me. Probably a mangled session? Charlie> I also agree with other users that auto is a better place Charlie> to do that check. Chaining is a lot more powerful because it allows you to distribute responsibilities hierarchically throughout several actions: package MyApp::Controller::Root; sub foo :Chained('/') CaptureArgs(0) { my ($self, $c) = @_; $c->detach unless $c->user_exists; } sub do_something :Chained('foo') Args(0) {} sub bar :Chained('foo') PathPart('') CaptureArgs(0) { my($self, $c) = @_; $c->detach unless $c->assert_user_roles('bar_level_users'); } sub do_something_else :Chained('bar') Args(0) {} It also gives you a lot more flexbility, given you can change the chaining via config: <Controller::Root> <actions> <do_something_else> Chained foo </do_something_else> </actions> </Controller::Root> The above configuration will eliminate the check for the 'bar_level_users' role before running do_something_else. -- Eden Cardim Need help with your perl Catalyst or DBIx::Class project? Software Engineer http://www.shadowcat.co.uk/catalyst/ Shadowcat Systems Ltd. Want a managed development or deployment platform? http://blog.edencardim.com http://www.shadowcat.co.uk/servers/ _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/