FAQ
I have been working on Catalyst project for some time and need a little help
with a problem I've run into. I was following the instructions in the
Authentication section of the Catalyst tutorial and trying to implement the
hashed password feature. However, when I uncommented the "class DBIx::Class"
line in my myapp.conf file, I got the following message in my logs:

Can't locate Catalyst/Plugin/Authentication/Store/DBIx/Class.pm in @INC

So I attempted to use CPAN to install
Catalyst::Authentication::Store::DBIx::Class.

This completely rendered my site totally unusable. Now I am receiving the
error:
Inconsistent hierarchy during C3 merge of class 'myAPP': merging failed on
parent 'Class::Accessor::Fast' at
/home/username/local/lib/perl/5.8.4/Class/C3/XS.pm line 56., referer:
https://www.mysite.com/

I have been unable to find anything that I've been able to understand on the
cause of this problem. Has anyone else come across this error message and if
so, has anyone found a solution to it.

I'm getting close to launching a site that depends on Catalyst and my need
is urgent. If I can provide any more information on my problem I'd be happy
to supply it.

Thanks in advance for the help.

Collin Condray
condray.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090407/ae715c76/attachment.htm

Search Discussions

  • Jay Shirley at Apr 8, 2009 at 4:42 am

    On Wed, Apr 8, 2009 at 1:18 PM, Collin Condray wrote:

    I have been working on Catalyst project for some time and need a little
    help with a problem I've run into. I was following the instructions in the
    Authentication section of the Catalyst tutorial and trying to implement the
    hashed password feature. However, when I uncommented the "class DBIx::Class"
    line in my myapp.conf file, I got the following message in my logs:

    Can't locate Catalyst/Plugin/Authentication/Store/DBIx/Class.pm in @INC

    So I attempted to use CPAN to install
    Catalyst::Authentication::Store::DBIx::Class.

    This completely rendered my site totally unusable. Now I am receiving the
    error:
    Inconsistent hierarchy during C3 merge of class 'myAPP': merging failed on
    parent 'Class::Accessor::Fast' at
    /home/username/local/lib/perl/5.8.4/Class/C3/XS.pm line 56., referer:
    https://www.mysite.com/

    I have been unable to find anything that I've been able to understand on
    the cause of this problem. Has anyone else come across this error message
    and if so, has anyone found a solution to it.

    I'm getting close to launching a site that depends on Catalyst and my need
    is urgent. If I can provide any more information on my problem I'd be happy
    to supply it.

    Thanks in advance for the help.

    Collin Condray
    condray.net

    _______________________________________________
    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/
    Chances are you still have Authentication::DBIC::Schema being loaded as a
    plugin, if so, take it out. You should be using Catalyst::Authentication::
    and -not- Catalyst::Plugin::Authentication modules for this. Only load
    Authentication as a plugin (Catalyst::Plugin::Authentication) and nothing
    else in the Auth space as a plugin.

    If not, or it doesn't fix it, paste your plugins and config into an email
    and we can help. Psychic Catalyst support is reserved on a case by case
    basis.


    -J
    -------------- next part --------------
    An HTML attachment was scrubbed...
    URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090408/76147bd4/attachment.htm
  • John Romkey at Apr 8, 2009 at 4:46 am

    On Apr 8, 2009, at 12:18 AM, Collin Condray wrote:
    I have been working on Catalyst project for some time and need a
    little help with a problem I've run into. I was following the
    instructions in the Authentication section of the Catalyst tutorial
    and trying to implement the hashed password feature. However, when I
    uncommented the "class DBIx::Class" line in my myapp.conf file, I
    got the following message in my logs:

    Can't locate Catalyst/Plugin/Authentication/Store/DBIx/Class.pm in
    @INC

    So I attempted to use CPAN to install
    Catalyst::Authentication::Store::DBIx::Class.

    This completely rendered my site totally unusable. Now I am
    receiving the error:
    Inconsistent hierarchy during C3 merge of class 'myAPP': merging
    failed on parent 'Class::Accessor::Fast' at /home/username/local/lib/
    perl/5.8.4/Class/C3/XS.pm line 56., referer: https://www.mysite.com/

    I have been unable to find anything that I've been able to
    understand on the cause of this problem. Has anyone else come across
    this error message and if so, has anyone found a solution to it.

    I'm getting close to launching a site that depends on Catalyst and
    my need is urgent. If I can provide any more information on my
    problem I'd be happy to supply it.
    Catalyst's authentication system changed substantially a while back
    (last summer, I think). As of that change, the only Catalyst::Plugin
    module you should be using for authentication is
    Catalyst::Plugin::Authentication. It will use other modules which live
    in the Catalyst::Authentication namespace rather than the
    Catalyst::Plugin::Authentication namespace, where older modules used
    to live. In theory the older ones should generally still work thanks
    to backwards-compatibility shims, but you might see problems with them
    over time.

    What version of Catalyst::Plugin::Authentication are you using? The
    current one is 0.10011

    I would make sure that you have the latest versions of Catalyst-
    Runtime, Catalyst::Plugin::Authentication, DBIx::Class, Class::C3 and
    Class::C3::XS installed. Class::C3 is what Catalyst and DBIx::Class
    use in order to handle object inheritance.

    Could you share with us the code from your app's startup file which
    loads the Catalyst plugins, and also the relevant lines from your
    config file? Otherwise we don't have much to go on.
    - john romkey
    http://www.romkey.com/

    -------------- next part --------------
    An HTML attachment was scrubbed...
    URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090408/246c828d/attachment.htm
  • Tomas Doran at Apr 8, 2009 at 9:43 am

    Collin Condray wrote:
    This completely rendered my site totally unusable. Now I am receiving
    the error:
    Inconsistent hierarchy during C3 merge of class 'myAPP': merging failed
    on parent 'Class::Accessor::Fast' at
    /home/username/local/lib/perl/5.8.4/Class/C3/XS.pm line 56., referer:
    https://www.mysite.com/

    I have been unable to find anything that I've been able to understand on
    the cause of this problem. Has anyone else come across this error
    message and if so, has anyone found a solution to it.
    Yes.

    If you remove /home/username/local/lib/perl/5.8.4/Class/C3/XS.pm then
    you'll get a better / more helpful error message.

    The (brief) explanation is that somehow, your application is composed of
    base classes which cannot be resolved into a linear order.

    Example:

    package BaseLeft;
    our $VERSION = 0.1;

    package BaseRight;
    our $VERSION = 0.1;

    package A;
    use base qw/BaseLeft BaseRight/;

    package B;
    use base qw/BaseRight BaseLeft/;

    package CrashAndBurn;
    use base qw/A B/;

    Now, using Algorithm::C3, try to resolve a method call in
    CrashAndBurn... Answer - you can't!!! It doesn't make sense..

    Which means that C3 resolution is going to explode, just as you're
    seeing. You should be able to look at the 'use base' lines in your
    plugins, and work out if you have this situation. Most often, its caused
    by code which says use base qw/Class::Data::Inheritable
    Class::Accessor::Fast/ (as everything else does it the other way round.

    The most common plugin causing this is
    Catalyst::Plugin::Session::Store::FastMMap <= version 0.03. So if you're
    using that, upgrade, and it should fix your issues!

    Cheers
    t0m
  • Collin Condray at Apr 8, 2009 at 11:59 am
    Thanks everyone for their quick responses to my issue. Between upgrading to
    the latest version of Catalyst and commenting out all references to the
    Authentication module I can get the vast majority of the site's
    functionality working which is good enough for my immediate purposes. I've
    also updated DBIx::Class, Class::C3 and
    Class::C3::XS as suggested. So now, my issue is no longer urgent just
    puzzling.

    As J. has requested here are the relevant parts of my configuration files:

    myapp.pm

    use Catalyst (
    #'-Debug',
    'ConfigLoader',
    'Static::Simple',
    'StackTrace',
    'Session',
    'Session::Store::FastMmap',
    'Session::State::Cookie',
    'Authentication',

    'Authorization::Roles',
    'Authorization::ACL',

    'RequireSSL',
    'Email',
    'CustomErrorMessage',

    our $VERSION = '0.01';

    __PACKAGE__->config( name => 'myapp' );

    # Start the application
    __PACKAGE__->setup;

    # Authorization::ACL Rules
    __PACKAGE__->deny_access_unless( "/admin", [qw/admin/], );

    and myapp.conf

    name myapp
    <authentication>
    default_realm dbic
    <realms>
    <dbic>
    <credential>
    # Note this first definition would be the same as setting
    # __PACKAGE__->config->{authentication}->{realms}->{dbic}
    # ->{credential} = 'Password' in lib/myapp.pm
    #
    # Specify that we are going to do password-based auth
    class Password
    # This is the name of the field in the users table with the
    # password stored in it
    password_field password
    # Switch to more secure hashed passwords
    #password_type clear
    password_type hashed
    # Use the SHA-1 hashing algorithm
    password_hash_type SHA-1
    </credential>
    <store>
    # Use DBIC to retrieve username, password & role information
    class DBIx::Class
    # This is the model object created by Catalyst::Model::DBIC
    # from your schema (you created 'myapp::Schema::User' but as
    # the Catalyst startup debug messages show, it was loaded as
    # 'myapp::Model::DB::Users').
    # NOTE: Omit 'myapp::Model' here just as you would when
    using
    # '$c->model("DB::Users)'
    user_class myappDB::Users
    # This is the name of a many_to_many relation in the users
    # object that points to the roles for that user
    role_relation roles
    # This is the name of field in the roles table that contains
    # the role information
    role_field role
    </store>
    </dbic>
    </realms>
    </authentication>

    The main exception to the tutorial method is that I'm using an email address
    as the user name rather than a username field.

    The error message that is now showing up in my logs is: "No Store specified
    for realm "dbic", using the Null store."

    Thanks again for the responses. Again, please let me know if there's any
    other information I can provide.

    Collin Condray
    condray.net
    -------------- next part --------------
    An HTML attachment was scrubbed...
    URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090408/70d5a712/attachment.htm
  • Tomas Doran at Apr 8, 2009 at 12:26 pm

    Collin Condray wrote:
    As J. has requested here are the relevant parts of my configuration files:
    'Session::Store::FastMmap',
    I'd be prepared to bet that the issue with C3 was related to an old
    version of this plugin. Upgrading this will have solved your issue, not
    DBIC or Class::C3(::XS)?
    name myapp
    <authentication>
    default_realm dbic
    <realms>
    <dbic>
    <credential> <snip>
    </credential>
    <store>
    # Use DBIC to retrieve username, password & role information
    class DBIx::Class <snip>
    </store>
    </dbic>
    </realms>
    </authentication>

    The error message that is now showing up in my logs is: "No Store
    specified for realm "dbic", using the Null store."
    Hmm, this all looka correct to my eyes, however Catalyst seemingly isn't
    seeing that config correctly.
    Thanks again for the responses. Again, please let me know if there's any
    other information I can provide.
    If you start your app in debug mode, and append ?dump_info=1 to a
    request, then paste the 'config' part of the debug screen, that'll give
    us what Catalyst has actually loaded as the config - I guess that'll be
    different to what you _think_ Catalyst is loading as your config from
    your config file..

    Cheers
    t0m
  • Collin Condray at Apr 9, 2009 at 2:31 am
    Tomas,

    Here's the config section of the debug output:

    do {
    my $a = {
    "Action::RenderView" => {
    ignore_classes => [
    "DBIx::Class::ResultSource::Table",
    "DBIx::Class::ResultSourceHandle",
    "DateTime",
    ],
    scrubber_func => sub { "???" },
    },
    "Plugin::Authentication" => {
    default_realm => "dbic",
    realms => {
    dbic => {
    credential => {
    class => "Password",
    password_field => "password",
    password_hash_type => "SHA-1",
    password_type => "hashed",
    },
    store => {
    class => "DBIx::Class",
    "ignore_fields_in_find" => [],
    role_field => "role",
    role_relation => "roles",
    store_user_class =>
    "Catalyst::Authentication::Store::DBIx::Class::User",
    user_class => "myappDB::Users",
    },
    use_session => 1,
    },
    },
    use_session => 1,
    },
    "Plugin::ConfigLoader" => {},
    authentication => 'fix',
    "custom-error-messsage" => { "error-template" => "internal_error.tt",
    "view-name" => "TToolkit" },
    email => ["Sendmail"],
    home => "/home/.avis/username/domainname.com/myapp",
    name => "myapp",
    require_ssl => { no_cache => 0, remain_in_ssl => 1 },
    root => bless({
    dirs => [
    "",
    "home",
    ".avis",
    "username",
    "domainname.com",
    "myapp",
    "root",
    ],
    file_spec_class => undef,
    volume => "",
    }, "Path::Class::Dir"),
    session => {
    cookie_name => "myapp_session",
    expires => 7200,
    storage => "/tmp/myapp/session_data",
    verify_address => 0,
    },
    stacktrace => { context => 3, verbose => 0 },
    static => {
    debug => 1,
    dirs => [],
    ignore_dirs => [],
    ignore_extensions => ["tmpl", "tt", "tt2", "html", "xhtml"],
    include_path => ['fix'],
    mime_types => {},
    mime_types_obj => bless({}, "MIME::Types"),
    no_logs => 1,
    },
    test_mode => 1,
    };
    $a->{authentication} = $a->{"Plugin::Authentication"};
    $a->{static}{include_path}[0] = $a->{root};
    $a;
    }

    So it looks like the Authentication plugin is loading and the default_realm
    is dbic. Should I also be seeing something about the other
    authentication/authorization plugins (i.e. Authorization::Roles,
    Authorization::ACL)?

    Once again I appreciate the help!

    Collin Condray
    condray.net

    On Wed, Apr 8, 2009 at 7:26 AM, Tomas Doran wrote:

    Collin Condray wrote:
    As J. has requested here are the relevant parts of my configuration files:
    'Session::Store::FastMmap',
    I'd be prepared to bet that the issue with C3 was related to an old version
    of this plugin. Upgrading this will have solved your issue, not DBIC or
    Class::C3(::XS)?

    name myapp
    <authentication>
    default_realm dbic
    <realms>
    <dbic>
    <credential> <snip>
    </credential>
    <store>
    # Use DBIC to retrieve username, password & role
    information
    class DBIx::Class <snip>
    </store>
    </dbic>
    </realms>
    </authentication>

    The error message that is now showing up in my logs is: "No Store
    specified for realm "dbic", using the Null store."
    Hmm, this all looka correct to my eyes, however Catalyst seemingly isn't
    seeing that config correctly.

    Thanks again for the responses. Again, please let me know if there's any
    other information I can provide.
    If you start your app in debug mode, and append ?dump_info=1 to a request,
    then paste the 'config' part of the debug screen, that'll give us what
    Catalyst has actually loaded as the config - I guess that'll be different to
    what you _think_ Catalyst is loading as your config from your config file..

    Cheers
    t0m


    _______________________________________________
    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/
    -------------- next part --------------
    An HTML attachment was scrubbed...
    URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090408/d4f603e7/attachment.htm
  • K. Akimoto at May 12, 2009 at 12:28 pm
    Hello, Collin

    I have the same configuration and output of the Catalyst config too!

    My problem is a bit different. I could login but the accounts that have
    'admin' roles would never get detected of the 'admin' role.

    How are you doing with this issue?


    Guys, please comment.

    Thank you:)

    K. akimoto


    Quoting Collin Condray <ccondray@gmail.com>:
    Tomas,

    Here's the config section of the debug output:

    do {
    my $a = {
    "Action::RenderView" => {
    ignore_classes => [
    "DBIx::Class::ResultSource::Table",
    "DBIx::Class::ResultSourceHandle",
    "DateTime",
    ],
    scrubber_func => sub { "???" },
    },
    "Plugin::Authentication" => {
    default_realm => "dbic",
    realms => {
    dbic => {
    credential => {
    class => "Password",
    password_field => "password",
    password_hash_type => "SHA-1",
    password_type => "hashed",
    },
    store => {
    class => "DBIx::Class",
    "ignore_fields_in_find" => [],
    role_field => "role",
    role_relation => "roles",
    store_user_class =>
    "Catalyst::Authentication::Store::DBIx::Class::User",
    user_class => "myappDB::Users",
    },
    use_session => 1,
    },
    },
    use_session => 1,
    },
    "Plugin::ConfigLoader" => {},
    authentication => 'fix',
    "custom-error-messsage" => { "error-template" =>
    "internal_error.tt",
    "view-name" => "TToolkit" },
    email => ["Sendmail"],
    home => "/home/.avis/username/domainname.com/myapp",
    name => "myapp",
    require_ssl => { no_cache => 0, remain_in_ssl => 1 },
    root => bless({
    dirs => [
    "",
    "home",
    ".avis",
    "username",
    "domainname.com",
    "myapp",
    "root",
    ],
    file_spec_class => undef,
  • Collin Condray at May 15, 2009 at 2:31 am
    It looks like the problem is resolved. I upgraded to the latest version of
    Catalyst and Authentication/Authorization started working normally. Funny
    how that happens.

    Thanks for the follow up. I appreciate it!

    Collin Condray
    condray.net

    On Tue, May 12, 2009 at 7:28 AM, wrote:

    Hello, Collin

    I have the same configuration and output of the Catalyst config too!

    My problem is a bit different. I could login but the accounts that have
    'admin' roles would never get detected of the 'admin' role.

    How are you doing with this issue?


    Guys, please comment.

    Thank you:)

    K. akimoto


    Quoting Collin Condray <ccondray@gmail.com>:
    Tomas,

    Here's the config section of the debug output:

    do {
    my $a = {
    "Action::RenderView" => {
    ignore_classes => [
    "DBIx::Class::ResultSource::Table",
    "DBIx::Class::ResultSourceHandle",
    "DateTime",
    ],
    scrubber_func => sub { "???" },
    },
    "Plugin::Authentication" => {
    default_realm => "dbic",
    realms => {
    dbic => {
    credential => {
    class => "Password",
    password_field => "password",
    password_hash_type => "SHA-1",
    password_type => "hashed",
    },
    store => {
    class => "DBIx::Class",
    "ignore_fields_in_find" => [],
    role_field => "role",
    role_relation => "roles",
    store_user_class =>
    "Catalyst::Authentication::Store::DBIx::Class::User",
    user_class => "myappDB::Users",
    },
    use_session => 1,
    },
    },
    use_session => 1,
    },
    "Plugin::ConfigLoader" => {},
    authentication => 'fix',
    "custom-error-messsage" => { "error-template" =>
    "internal_error.tt",
    "view-name" => "TToolkit" },
    email => ["Sendmail"],
    home => "/home/.avis/username/domainname.com/myapp",
    name => "myapp",
    require_ssl => { no_cache => 0, remain_in_ssl => 1 },
    root => bless({
    dirs => [
    "",
    "home",
    ".avis",
    "username",
    "domainname.com",
    "myapp",
    "root",
    ],
    file_spec_class => undef,
    -------------- next part --------------
    An HTML attachment was scrubbed...
    URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090514/43b0693e/attachment.htm
  • K. Akimoto at May 17, 2009 at 12:02 am
    Hello, Collin,

    My modules are:

    Catalyst::Plugin::Authentication 0.10011

    Catalyst::Plugin::Authentication::Credential::Password

    Catalyst::Plugin::Authorization::Roles 0.07
    What are you using? Mine's still not working . Even downloaded the
    codes for tute 6
    (http://search.cpan.org/~hkclark/Catalyst-Manual-5.7021/lib/Catalyst/Manual/Tutorial/Authorization.pod)

    and it still doesn't work...
    Weird..
    Will work on it more today and will revert

    K. akimoto




    Quoting Collin Condray <ccondray@gmail.com>:
    It looks like the problem is resolved. I upgraded to the latest
    version of
    Catalyst and Authentication/Authorization started working normally.
    Funny
    how that happens.

    Thanks for the follow up. I appreciate it!

    Collin Condray
    condray.net

    On Tue, May 12, 2009 at 7:28 AM, wrote:

    Hello, Collin

    I have the same configuration and output of the Catalyst config too!
    My problem is a bit different. I could login but the accounts that have
    'admin' roles would never get detected of the 'admin' role.

    How are you doing with this issue?


    Guys, please comment.

    Thank you:)

    K. akimoto


    Quoting Collin Condray <ccondray@gmail.com>:
    Tomas,

    Here's the config section of the debug output:

    do {
    my $a = {
    "Action::RenderView" => {
    ignore_classes => [
    "DBIx::Class::ResultSource::Table",
    "DBIx::Class::ResultSourceHandle",
    "DateTime",
    ],
    scrubber_func => sub { "???" },
    },
    "Plugin::Authentication" => {
    default_realm => "dbic",
    realms => {
    dbic => {
    credential => {
    class => "Password",
    password_field => "password",
    password_hash_type => "SHA-1",
    password_type => "hashed",
    },
    store => {
    class => "DBIx::Class",
    "ignore_fields_in_find" => [],
    role_field => "role",
    role_relation => "roles",
    store_user_class =>
    "Catalyst::Authentication::Store::DBIx::Class::User",
    user_class => "myappDB::Users",
    },
    use_session => 1,
    },
    },
    use_session => 1,
    },
    "Plugin::ConfigLoader" => {},
    authentication => 'fix',
    "custom-error-messsage" => { "error-template" =>
    "internal_error.tt",
    "view-name" => "TToolkit" },
    email => ["Sendmail"],
    home => "/home/.avis/username/domainname.com/myapp",
    name => "myapp",
    require_ssl => { no_cache => 0, remain_in_ssl => 1 },
    root => bless({
    dirs => [
    "",
    "home",
    ".avis",
    "username",
    "domainname.com",
    "myapp",
    "root",
    ],
    file_spec_class => undef,
  • K. Akimoto at May 17, 2009 at 3:33 am
    Hello, all,

    What I did:

    1) Downloaded a copy of the tute codes for
    http://search.cpan.org/~hkclark/Catalyst-Manual-5.7021/lib/Catalyst/Manual/Tutorial/Authorization.pod
    1.5) Works Very well! :D

    2) Modified MyApp.pm and Schema/Users.pm, Schema/UserRoles.pm and
    Schema/Roles.pm to reflect my database model. This is what my MyApp.pm
    has for plugins:

    # Load plugins
    use Catalyst qw/-Debug
    ConfigLoader
    Static::Simple

    StackTrace

    Authentication

    Authentication::Credential::Password
    Authorization::Roles


    Session
    Session::Store::FastMmap
    Session::State::Cookie
    /;






    3) Ran application ( DBIC_TRACE=1 perl script/myapp_server.pl ). I did
    see the sql that queries the "Users" database table (which is expected)
    but no other sqls that query the "UserRoles" and/or "Roles" database
    table. Any idea why?


    4) Can log in (authentication is OK) but can't user object can't show
    the roles of the current user.
    In my MyApp::Controller::Login.pm, I have the following:



    if ($c->authenticate ( {'username' => $username, 'password'=>
    $password} ))
    {
    # # If successful, then let them use the application
    if ($c->check_user_roles( "admin" ))
    {
    $c->log->debug(" Admin TRACKED " );
    }
    else{
    $c->log->debug(" Admin NOT TRACKED " );
    }

    ...
    }


    I keep seeing " Admin NOT TRACKED" implying that the user object is not
    finding the roles.


    As my application runs on a database backend, I don't think it's going
    to be possible for me to include it in this post.

    I am really suspecting that Roles Authorization (with a database
    backend using Catalyst::Authentication::Store::DBIx::Class ) doesn't
    work at all or is broken.



    Question:
    ========
    1) Anyone else having problems with using Roles Authorization (with a
    database backend using Catalyst::Authentication::Store::DBIx::Class )?
    2) Any up-to-date documentation to illustrate on roles Authorization set
    up using a database backend available?


    I am very sorry to trouble you guys but I am really wanting to use the
    Authorization plugins in Catalyst (to keep everything in my application
    in the theme of Catalyst) , but after many hours , reading and trying
    different methods to debug, I can't seem to get it working

    Please help:)

    Thank you.

    K. akimoto







    Quoting kakimoto@tpg.com.au:
    Hello, Collin,

    My modules are:

    Catalyst::Plugin::Authentication 0.10011
    Catalyst::Plugin::Authentication::Credential::Password
    Catalyst::Plugin::Authorization::Roles 0.07
    \
  • K. Akimoto at May 17, 2009 at 4:21 am
    hello, guys,
    I have taken a copy of the tute codes which work for authrozation.

    1) Created the required db tables in postgresql (made a new database)
    2) Changed my lib/MyApp/Model/DB.pm to point to the new database I made
    3) populated all the required values.
    4) restarted the application
    5) Managed to log in but an error message comes up on the web interface:

    "Couldn't render template "undef error - role table does not have a
    column called role at
    /home/kakimoto/projects/esca/MyApp/root/src/books/list.tt2 line 50
    "


    This is really weird. I am using the same model files as per the tute
    (no changes at all) .

    Here's an extract of how my db looks like using pg_dump. I have also
    attached a file here.

    ------------------Extract End----------------------------------
    --
    -- Name: roles; Type: TABLE; Schema: public; Owner: myapp_user; Tablespace:
    --

    CREATE TABLE roles (
    id integer NOT NULL,
    role text
    );


    --
    -- Name: user_roles; Type: TABLE; Schema: public; Owner: myapp_user;
    Tablespace:
    --

    CREATE TABLE user_roles (
    user_id integer NOT NULL,
    role_id integer NOT NULL
    );


    CREATE TABLE users (
    id integer NOT NULL,
    username text,
    password text,
    email_address text,
    first_name text,
    last_name text,
    active integer
    );


    ------------------Extract End----------------------------------





    Could it be that there's some definition I never declare such that
    Catalyst::Authentication::Store::DBIx::Class would know which is the
    actual "Roles" db table to look at?
  • Tomas Doran at May 18, 2009 at 9:34 am

    kakimoto@tpg.com.au wrote:
    2) Modified MyApp.pm and Schema/Users.pm, Schema/UserRoles.pm and
    Schema/Roles.pm to reflect my database model. This is what my MyApp.pm
    has for plugins:

    # Load plugins
    use Catalyst qw/-Debug
    ConfigLoader
    Static::Simple

    StackTrace

    Authentication

    Authentication::Credential::Password
    ^^ That's where you broke it. Right there..

    Why did you add 'Authentication::Credential::Password' to the plugin
    list? What made you think this was a good idea or whould help? Where
    should we make it more clear in the documentation that this is the wrong
    thing to do?

    Cheers
    t0m
  • Tomas Doran at May 18, 2009 at 9:30 am

    kakimoto@tpg.com.au wrote:
    Hello, Collin,

    My modules are:

    Catalyst::Plugin::Authentication 0.10011

    Catalyst::Plugin::Authentication::Credential::Password
    Woah there!

    Why are you using Catalyst::Plugin::Authentication::Credential::Password?

    From the documentation:

    'THIS IS A COMPATIBILITY SHIM. It allows old configurations of Catalyst
    Authentication to work without code changes.

    DO NOT USE IT IN ANY NEW CODE!'

    You will be configuring authentication in the new style (as documented
    by the version of Plugin::Authentication you're running), and combining
    that with old-style authentication plugins _WILL NOT WORK_.

    Cheers
    t0m

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcatalyst @
categoriescatalyst, perl
postedApr 8, '09 at 4:18a
activeMay 18, '09 at 9:34a
posts14
users5
websitecatalystframework.org
irc#catalyst

People

Translate

site design / logo © 2021 Grokbase