use base qw(Apache::MVC Maypole::Authentication::Abstract); MyApp->config->{auth} = { user_class => 'MyApp::Customer', user_field => 'email', session_class => 'Apache::Session::Postgres', session_args => { DataSource => 'dbi:Pg:dbname=myapp', UserName => 'postgres', Password => '', Commit => 1 } }; sub authenticate { my $r = shift; if ( $r->{table} eq 'products' && $r->{action} eq 'list' ) { $r->public; } elsif ( $r->{table} eq 'products' && $r->{action} eq 'search' ) { $r->private; $r->{template} = 'login' unless $r->{user}; } elsif ( $r->{table} eq 'products' && $r->{action} eq 'edit' ) { $r->restricted; $r->{template} = 'login' unless $r->{user}; } }