[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