Mailing List Archive

Stupid error with C::Authentication
Hello

In a quite simple application

__PACKAGE__->config('Plugin::Authentication' =>
{
default_realm => 'members',
realms => {
members => {
credential => {
class =>
'+Admin::Util::OldPassword',
password_field => 'password',
password_type => 'self_check',
},
store => {
class =>
'DBIx::Class',
user_model =>
'DB::InfEmployeeTab',
}
}
}
});

Later, in Controller::Root

$c->authenticate( { login => 'login', password => 'password' } );

(I'm just checking if everything is wired properly)

I get

[error] Caught exception in Admin::Controller::Root->index "Can't use
string ("Catalyst::Authentication::Store:"...) as a HASH ref while
"strict refs" in use at accessor
Catalyst::Authentication::Store::DBIx::Class::User::_user (defined at
/usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
line 12) line 5, <DATA> line 1003."

My password class has nothing to get wrong, and replacing it with
default C::A::Credential::Password does not change anything

running under perl -d , script works just fine. Running without debug
mode, it does not even reach my module.

I have no idea where to look next.

Here is debug output

Caught exception in Admin::Controller::Root->index "Can't use string
("Catalyst::Authentication::Store:"...) as a HASH ref while "strict
refs" in use at accessor
Catalyst::Authentication::Store::DBIx::Class::User::_user (defined at
/usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
line 12) line 5, <DATA> line 1003."

Request

do {
require Symbol;
my $a = bless({
_log => bless({
_body => "[info] *** Request 1 (0.333/s)
[19146] [Mon Aug 26 19:44:43 2013] ***\n[debug] Path is \"/\"\n[debug]
\"GET\" request for \"/\" from \"195.170.223.197\"\n[error] Caught
exception in Admin::Controller::Root->index \"Can't use string
(\"Catalyst::Authentication::Store:\"...) as a HASH ref while \"strict
refs\" in use at accessor
Catalyst::Authentication::Store::DBIx::Class::User::_user (defined at
/usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
line 12) line 5, <DATA> line 1003.\"\n",
_psgi_errors => *main::STDERR,
level => 31,
}, "Catalyst::Log"),
_path => "",
_read_length => 0,
_read_position => 0,
action => "/",
address => "195.170.223.197",
arguments => [],
base => bless(do{\(my $o =
"http://corp.infotel.ru:3000/")}, "URI::http"),
body_parameters => {},
captures => [],
cookies => {
admin_session => bless({
name => "admin_session",
path => "/",
value =>
["ecf2b994cddc2aa02145005778961e5a06774b3b"],
}, "CGI::Simple::Cookie"),
e37551640d343da16a59042e6370102e => bless({
name => "e37551640d343da16a59042e6370102e",
path => "/",
value => ["jac13b5c06jqd96vn57dbjpgh6"],
}, "CGI::Simple::Cookie"),
PHPSESSID => bless({
name => "PHPSESSID",
path => "/",
value => ["meutdakp8mgf9to12iaq01dkh3"],
}, "CGI::Simple::Cookie"),
},
env => {
"HTTP_ACCEPT" =>
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"HTTP_ACCEPT_ENCODING" => "gzip,deflate,sdch",
"HTTP_ACCEPT_LANGUAGE" =>
"en-US,en;q=0.8,ru;q=0.6",
"HTTP_CACHE_CONTROL" => "max-age=0",
"HTTP_CONNECTION" => "keep-alive",
"HTTP_COOKIE" =>
"e37551640d343da16a59042e6370102e=jac13b5c06jqd96vn57dbjpgh6;
PHPSESSID=meutdakp8mgf9to12iaq01dkh3;
admin_session=ecf2b994cddc2aa02145005778961e5a06774b3b",
"HTTP_HOST" => "corp.infotel.ru:3000",
"HTTP_PRAGMA" => "no-cache",
"HTTP_USER_AGENT" => "Mozilla/5.0 (X11;
FreeBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/27.0.1453.81 Safari/537.36",
"PATH_INFO" => "/",
"psgi.errors" => *main::STDERR,
"psgi.input" =>
\*HTTP::Server::PSGI::$input,
"psgi.multiprocess" => "",
"psgi.multithread" => "",
"psgi.nonblocking" => "",
"psgi.run_once" => "",
"psgi.streaming" => 1,
"psgi.url_scheme" => "http",
"psgi.version" => [1, 1],
"psgix.harakiri" => 1,
"psgix.input.buffered" => 1,
"psgix.io" =>
bless(Symbol::gensym(), "IO::Socket::INET"),
"QUERY_STRING" => "",
"REMOTE_ADDR" => "195.170.223.197",
"REMOTE_PORT" => 35202,
"REQUEST_METHOD" => "GET",
"REQUEST_URI" => "/",
"SCRIPT_NAME" => "",
"SERVER_NAME" => 0,
"SERVER_PORT" => 3000,
"SERVER_PROTOCOL" => "HTTP/1.1",
},
headers => bless({
"::std_case" => { cookie => "COOKIE" },
"accept" =>
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept-encoding" => "gzip,deflate,sdch",
"accept-language" => "en-US,en;q=0.8,ru;q=0.6",
"cache-control" => "max-age=0",
"connection" => "keep-alive",
"cookie" =>
"e37551640d343da16a59042e6370102e=jac13b5c06jqd96vn57dbjpgh6;
PHPSESSID=meutdakp8mgf9to12iaq01dkh3;
admin_session=ecf2b994cddc2aa02145005778961e5a06774b3b",
"host" => "corp.infotel.ru:3000",
"pragma" => "no-cache",
"user-agent" => "Mozilla/5.0 (X11;
FreeBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/27.0.1453.81 Safari/537.36",
}, "HTTP::Headers"),
match => "/",
method => "GET",
parameters => {},
protocol => "HTTP/1.1",
query_keywords => "",
query_parameters => {},
remote_user => undef,
secure => 0,
uploads => {},
uri => bless(do{\(my $o =
"http://corp.infotel.ru:3000/")}, "URI::http"),
}, "Catalyst::Request");
*{$a->{env}{"psgix.io"}} = {
io_socket_peername => pack("H*","10028982c3aadfc50000000000000000"),
io_socket_timeout => undef,
};
$a;
}
Response

bless({
_log => bless({
_body => "[info] *** Request 1 (0.333/s) [19146] [Mon Aug 26
19:44:43 2013] ***\n[debug] Path is \"/\"\n[debug] \"GET\" request for
\"/\" from \"195.170.223.197\"\n[error] Caught exception in
Admin::Controller::Root->index \"Can't use string
(\"Catalyst::Authentication::Store:\"...) as a HASH ref while \"strict
refs\" in use at accessor
Catalyst::Authentication::Store::DBIx::Class::User::_user (defined at
/usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
line 12) line 5, <DATA> line 1003.\"\n",
_psgi_errors => *main::STDERR,
level => 31,
}, "Catalyst::Log"),
_response_cb => sub { ... },
body => undef,
cookies => {},
finalized_headers => 0,
headers => bless({
"::std_case" => { "x-catalyst" => "X-Catalyst" },
"content-type" => "text/html; charset=utf-8",
"x-catalyst" => "5.90040",
}, "HTTP::Headers"),
status => 200,
}, "Catalyst::Response")
Stash

{}
Config

do {
my $a = {
"Action::RenderView" => {
ignore_classes => [
"DBIx::Class::ResultSource::Table",
"DBIx::Class::ResultSourceHandle",
"DateTime",
],
scrubber_func => sub { ... },
},
"default_view" => "HTML",
"disable_component_resolution_regex_fallback" => 1,
"enable_catalyst_header" => 1,
"home" => "/home/tarkhil/work/Admin",
"name" => "Admin",
"Plugin::Authentication" => {
default_realm => "members",
realms => {
members => {
credential => {
class => "+Admin::Util::OldPassword",
password_field => "password",
password_hash_type => "SHA-1",
password_type => "self_check",
},
store => {
class => "DBIx::Class",
id_field => ["login"],
ignore_fields_in_find => [],
lazyload => 0,
store_user_class =>
"Catalyst::Authentication::Store::DBIx::Class::User",
user_model => "DB::InfEmployeeTab",
},
use_session => 1,
},
},
use_session => 1,
},
"Plugin::ConfigLoader" => {},
"Plugin::Session" => {
cookie_name => "admin_session",
expires => 7200,
storage => "/tmp/admin/session_data",
verify_address => 0,
verify_user_agent => 0,
},
"Plugin::Static::Simple" => {
debug => 1,
dirs => [],
ignore_dirs => [],
ignore_extensions => ["tmpl", "tt", "tt2", "html", "xhtml"],
include_path => [
bless({
dirs => ["", "home", "tarkhil", "work", "Admin", "root"],
file_spec_class => undef,
volume => "",
}, "Path::Class::Dir"),
],
mime_types => {},
mime_types_obj => bless({}, "MIME::Types"),
no_logs => 1,
},
"root" => 'fix',
"static" => 'fix',
};
$a->{"root"} = $a->{"Plugin::Static::Simple"}{include_path}[0];
$a->{"static"} = $a->{"Plugin::Static::Simple"};
$a;
}


_______________________________________________
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/
Re: Stupid error with C::Authentication [ In reply to ]
On 27 August 2013 02:07, Alex Povolotsky <tarkhil@over.ru> wrote:
> In a quite simple application
[snip]
> I get
>
> [error] Caught exception in Admin::Controller::Root->index "Can't use string
> ("Catalyst::Authentication::Store:"...) as a HASH ref while "strict refs" in
> use at accessor Catalyst::Authentication::Store::DBIx::Class::User::_user
> (defined at
> /usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
> line 12) line 5, <DATA> line 1003."
>
> My password class has nothing to get wrong, and replacing it with default
> C::A::Credential::Password does not change anything

Hi Alex,
I've seen this particular error come up (with exactly that message)
when the user running the application was not able to connect to the
database successfully.

I don't know why that would vary depending on you using perl -d or
just perl though, but I thought I'd mention it.

-Toby

_______________________________________________
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/
Re: Stupid error with C::Authentication [ In reply to ]
On Mon, 26 Aug 2013 20:07:51 +0400
Alex Povolotsky <tarkhil@over.ru> wrote:

> Hello
>
> [error] Caught exception in Admin::Controller::Root->index "Can't use
> string ("Catalyst::Authentication::Store:"...) as a HASH ref while
> "strict refs" in use at accessor
> Catalyst::Authentication::Store::DBIx::Class::User::_user (defined at
> /usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
> line 12) line 5, <DATA> line 1003."

I also have this problem now and never did before. I have no
trouble accessing the database. Did you find a solution for this?

--TimH

_______________________________________________
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/
Re: Stupid error with C::Authentication [ In reply to ]
On Thu, 19 Sep 2013 20:54:53 -0700
TimH <timh@dirtymonday.net> wrote:

> On Mon, 26 Aug 2013 20:07:51 +0400
> Alex Povolotsky <tarkhil@over.ru> wrote:
>
> > Hello
> >
> > [error] Caught exception in Admin::Controller::Root->index "Can't use
> > string ("Catalyst::Authentication::Store:"...) as a HASH ref while
> > "strict refs" in use at accessor
> > Catalyst::Authentication::Store::DBIx::Class::User::_user (defined at
> > /usr/local/lib/perl5/site_perl/5.14/Catalyst/Authentication/Store/DBIx/Class/User.pm
> > line 12) line 5, <DATA> line 1003."
>
> I also have this problem now and never did before. I have no
> trouble accessing the database. Did you find a solution for this?

OK, so I was wrong about not having trouble accessing the
database; I could simply access it from everything but my Catalyst
app. The Pg install on this box was using /tmp as the socket
directory, and DBI was looking in /var/run/postgresql. I don't know
what determines this, but I set Pg to use /var/run/postgresql and now
I'm fine.

--TimH

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