>>>>> "Charlie" == Charlie Garrison <[email protected]> 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: [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/