Hello, 

First time post.  I am trying to implement the use of 
CGI::Application::Plugin::Authentication and I receive the following error when 
executing the script.

Error:
Error executing class callback in init stage: cfg_file: must have at least one 
config file. at MyApp/User.pm line 23


Below is the code I thought would be relevant.
package MyApp::User;

use strict;
use CGI::Carp qw/fatalsToBrowser/;

use base 'CGI::Application';
use DBI;
use CGI::Application::Plugin::DBH        (qw/dbh_config dbh/);
use CGI::Application::Plugin::ConfigAuto (qw/cfg cfg_file/);
use CGI::Application::Plugin::Session;
use CGI::Application::Plugin::Authentication;


# ----------------------------------------------------------------
# CGIapp_int
# ----------------------------------------------------------------
sub cgiapp_init {
 
 my $self = shift;
     
  my $dbh = $self->cfg('dsn'), $self->cfg('user'), $self->cfg('password');
  $self->authen->config(
       DRIVER   => [ 'DBI',  #  This is line 23 the error message is referring 
to.
       DBH         => $dbh,
          TABLE       => 'user',
          CONSTRAINTS => {
                'user.name'       => '__CREDENTIAL_1__',
                 'MD5:user.password'   => '__CREDENTIAL_2__'
           }
     ],
 );


 
 $self->authen->protected_runmodes(qr/^auth_/, 'display_user_form');
  

}

#------------------------------------------------------------------------------
# Define our run modes
#------------------------------------------------------------------------------
sub setup {
    my $self = shift;
    $self->start_mode('display_user_form');
    $self->error_mode('error');
    $self->mode_param('rm');
    $self->run_modes(
        'display_user_form' => 'display_user_form'
       
    );
}

#------------------------------------------------------------------------------
# Execute the following before we execute the requested run mode
#------------------------------------------------------------------------------
sub cgiapp_prerun {
    
 my $self = shift;
     $self->dbh_config($self->cfg('dsn'), $self->cfg('user'), 
$self->cfg('password'));
     $self->tmpl_path($self->cfg('template_path'));
    print $self;
}



In the cgi file I am calling the config file like so.
$webapp->cfg_file('myapp.cfg');

The config file looks like so:
$cfg{user}             = 'username';     
$cfg{password}         = 'password'; 
$cfg{DB_Name}   = 'db_name';
$cfg{DB_Server}   = 'localhost';
$cfg{dsn}              = "DBI:mysql:$cfg{DB_Name}:$cfg{DB_Server}";
$cfg{template_path}    = 'templates';
\%cfg


I am lost as to how to correct the error.  Thank you for your time.

Kevin


Reply via email to