Try prodding around your code with the debugger.

http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial::Debugging

Also Catalyst::Helper::AuthDBIC  on cpan.

The docs are fine, and I think roles support should work out of the box, but use the http credential, as it's easier to get up.

Put the following in Controller::Root:

sub auto : Private {
     my ($self, $c) = @_;
     $c->authenticate;
 }

and then have a poke around with TT and with the debugger to see what's missing or wrong in your setup.


Also have a look at Catalyst::Controller::AuthDBIC
On 12/05/2009, at 5:19 PM, [email protected] wrote:



hi, guys,

  I have looked at my codes again.

I read a lot more and debugged a lot more. I have arrived at the point
whereby my catalyst user object doesn't have any value for roles (despite
all the values have been set in the database backend).

 What am I missing?

For example, running the code which dumps a list of roles as per
http://search.cpan.org/~hkclark/Catalyst-Manual-5.7021/lib/Catalyst/Manual/Tutorial/Authorization.pod#___top
(title of Add Role-Specific Logic to the "Book List" Template") doesn't
show anything but by right, my current user has an 'admin' role.



What am I missing out? Please help. My apologies for the many files here.

Thank you and help!! :)




File Extract: lib/myApp.pm
==========================


        use Catalyst qw(
                -Debug
                ConfigLoader
                Static::Simple

                StackTrace

                Authentication
                Authentication::Credential::Password

                Authorization::Roles

                Cache
                Cache::Store::FastMmap

                FormValidator

                Session
                Session::Store::FastMmap
                Session::State::Cookie
        );


        __PACKAGE__->config(
                'name'    => 'myApp',
                'session' => { 'flash_to_stash' => 1 },
                'static'  => {
'include_path' => [ $static_dir{'base'}, $static_dir{'user_media'}, ],
                },
                'Plugin::Authentication' => {
                        default_realm => 'members',
                        members       => {
                                credential => {
                                        class                => 'Password',
                                        password_field       => 'password',
                                        password_type        => 'hashed',
                                        'password_hash_type' => 'SHA-384',
                                },
                                store => {
                                        class         => 'DBIx::Class',
                                        user_model    => 'myAppDB::Users',
                                        role_relation => 'map_user_role',
                                        role_field    => 'role',
                                },
                        },
                },
                'default_view' => 'myApp::View::TT',
        );


File Extract:  ~/projects/myApp/lib/myApp/Schema/Roles.pm
============================================================

        package myApp::Schema::Roles;

        use strict;
        use warnings;

        use base 'DBIx::Class';

        __PACKAGE__->load_components qw( TimeStamp Core );
        __PACKAGE__->table("roles");
        __PACKAGE__->add_columns(
          "id",
          {
                data_type => "integer",
                default_value => "nextval('roles_id_seq'::regclass)",
                is_nullable => 0,
                size => 4,
          },
          "role",
          {
                data_type => "text",
                default_value => undef,
                is_nullable => 1,
                size => undef,
          },
        );
        __PACKAGE__->set_primary_key("id");
        __PACKAGE__->add_unique_constraint("roles_pkey", ["id"]);


# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-04-16 15:08:18
        # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7hanYe3kgzC1BJKgsYhH3g

        __PACKAGE__->has_many( 'map_user_role' => 'myApp::Schema::UserRoles',
'role_id');

        1;

File Extract: ~/projects/myApp/lib/myApp/Schema/Users.pm
============================================================

        use base 'DBIx::Class';

        __PACKAGE__->load_components qw( TimeStamp Core );
        __PACKAGE__->table("users");
        __PACKAGE__->add_columns(
          "id",
          { data_type => "integer", default_value =>
"nextval('users_id_seq'::regclass)", is_nullable => 0, size => 4, },
          "password",
{ data_type => "text", default_value => undef, is_nullable => 0, size
=> undef, },
          "first_name",
{ data_type => "text", default_value => undef, is_nullable => 1, size
=> undef, },
          "last_name",
{ data_type => "text", default_value => undef, is_nullable => 1, size
=> undef, },
          "active",
          { data_type => "integer", default_value => undef, is_nullable => 1,
size => 4 },
          "main_contact_id",
          { data_type => "integer", default_value => undef, is_nullable => 1,
size => 4 },
          "company_name",
{ data_type => "text", default_value => undef, is_nullable => 1, size
=> undef, },
          "billing_details_id",
          { data_type => "integer", default_value => undef, is_nullable => 1,
size => 4 },
          "billing_address_id",
          { data_type => "integer", default_value => undef, is_nullable => 1,
size => 4 },
          "created_by",
          { data_type => "character varying", default_value => undef,
is_nullable => 1, size => 12, },
          "updated_by",
          { data_type => "character varying", default_value => undef,
is_nullable => 1, size => 12, },
          "created_on",
{ data_type => "timestamp without time zone", default_value => undef,
is_nullable => 1, size => 8, },
          "updated_on",
{ data_type => "timestamp without time zone", default_value => undef,
is_nullable => 1, size => 8, },
          "login_id",
          { data_type => "character varying", default_value => undef,
is_nullable => 0, size => 20, },
          "abn",
{ data_type => "text", default_value => undef, is_nullable => 1, size
=> undef, },
        );
        __PACKAGE__->set_primary_key("id");
        __PACKAGE__->add_unique_constraint("users_pkey", ["id"]);
        __PACKAGE__->add_unique_constraint("unique_login_id", ["login_id"]);


# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-04-16 15:08:18
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:k/gPa2W9kHxvVMrKXFiPng

        __PACKAGE__->add_columns(
                'created_on',
                { data_type => 'datetime', set_on_create => 1 },
                'updated_on',
                { data_type => 'datetime', set_on_create => 1, set_on_update => 
1 },
        );


        __PACKAGE__->has_many( 'map_user_role' => 'myApp::Schema::UserRoles',
'user_id');

        __PACKAGE__->many_to_many( 'roles' => 'map_user_role', 'role' );

        __PACKAGE__->has_one(main_contact => 'myApp::Schema::MainContacts',
{'foreign.id' => 'self.main_contact_id' });

        __PACKAGE__->has_one(billing_address => 'myApp::Schema::Addresses',
{'foreign.id' => 'self.billing_address_id' });


        1;


File Extract: ~/projects/myApp/lib/myApp/Schema/UserRoles.pm
============================================================

        package myApp::Schema::UserRoles;

        use strict;
        use warnings;

        use base 'DBIx::Class';

        __PACKAGE__->load_components("Core");
        __PACKAGE__->table("user_roles");
        __PACKAGE__->add_columns(
          "user_id",
          { data_type => "integer", default_value => undef, is_nullable => 0,
size => 4 },
          "role_id",
          { data_type => "integer", default_value => undef, is_nullable => 0,
size => 4 },
        );
        __PACKAGE__->set_primary_key("user_id", "role_id");
        __PACKAGE__->add_unique_constraint("user_roles_pkey", ["user_id",
"role_id"]);


# Created by DBIx::Class::Schema::Loader v0.04005 @ 2009-04-16 15:08:18
        # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:laVNuEzY2I7z1XQKMXVx0A
__PACKAGE__->belongs_to( 'user' => 'myApp::Schema::Users', 'user_id');

        __PACKAGE__->belongs_to('role' => 'myApp::Schema::Roles', 'role_id');

        1;


File Extract: ~/projects/myApp/lib/myApp/Model/myApp.pm
============================================================

        package myApp::Model::myAppDB;

        use strict;
        use base 'Catalyst::Model::DBIC::Schema';

        __PACKAGE__->config(
                schema_class => 'myApp::Schema',
                connect_info => [
                        'dbi:Pg:dbname=myApp',
                        'my-general-user',
                        'my-password',
                ],
        );

        1;










_______________________________________________
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/



_______________________________________________
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