[Catalyst] Catalyst::Plugin::Prototype: current state?

Charlie Garrison garrison at zeta.org.au
Sat Mar 20 16:33:42 GMT 2010


Good morning,

On 20/03/10 at 9:02 AM -0700, Ovid 
<publiustemp-catalyst at yahoo.com> wrote:

>1.  It breaks my app badly.
>You can connect to your server at http://curtis-poes-computer-3.local:3000
>[warn] Calling $c->view() will return a random view unless you specify one of:
>[warn] * $c->config(default_view => "the name of the default view to use")
>[warn] * $c->stash->{current_view} # the name of the view to use for this request
>[warn] * $c->stash->{current_view_instance} # the instance of the view to use for this request
>[warn] NB: in version 5.81, the "random" behavior will not work at all.
>[error] Caught exception in 
>Veure::View::AutoCRUD::JSON->process "must provide object to 
>convert at /Library/Perl/5.10.1/Catalyst/View/JSON.pm line 44"
>
>I can't tell why from the docs.  This is low priority for me, so I
>stopped using it as I don't (yet) need this feature.

The fix is given in the warning message, eg:

__PACKAGE__->config(default_view => 'TT'); # or whatever the 
name of your view is.

Then you have a 'default' view for your app and Catalyst doesn't 
need to choose one at random. AutoCRUD is adding another view 
and Catalyst doesn't know which one to use by default.

Assigning a default_view in config is good practice anyway; it's 
not just an issue with AutoCRUD. Add it now, and don't get 
bitten later when the same problem crops up with something else 
(eg. adding a view for sending emails).

>3.  It's not clear from the docs (to me) how to restrict access.
>
>I'm using Catalyst::Controller::ActionRole and a custom role to ensure
>that certain urls can only be accessed by those with admin 
>privileges. I can't tell how to hook this into AutoCRUD. I 
>suppose I could write a
>custom subclass of the plugin, so this is the least of my issues.

How about using C::P::Authorization::ACL, eg:

__PACKAGE__->deny_access_unless(
     "/autocrud",
     [qw/admin/], # user must have role 'admin'
);

I balked at adding C::P::Authorization::ACL to my app just for 
AutoCRUD, but I couldn't find a better way of adding auth 
restrictions to AutoCRUD. Maybe someone else will suggest 
something more elegant. (I seem to recall reading something a 
while back about performance degradation with 
C::P::Authorization::ACL; can anyone clarify?)


Charlie

-- 
    Ꮚ Charlie Garrison ♊ <garrison at zeta.org.au>
    〠 PO Box 141, Windsor, NSW 2756, Australia

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
http://www.ietf.org/rfc/rfc1855.txt



More information about the Catalyst mailing list