[Catalyst] Need some help with Authorization setup

kakimoto at tpg.com.au kakimoto at tpg.com.au
Tue May 12 07:19:46 GMT 2009



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;












More information about the Catalyst mailing list