-sub fixup_after_morph {}
-
-sub fixup_before_unmorph {}
-
-###----------------------------------------------------------------###
-### allow for authentication
-
-sub navigate_authenticated {
- my ($self, $args) = @_;
- $self = $self->new($args) if ! ref $self;
-
- $self->require_auth(1);
-
- return $self->navigate;
-}
-
-sub require_auth {
- my $self = shift;
- $self->{'require_auth'} = shift if @_ == 1;
- return $self->{'require_auth'};
-}
-
-sub is_authed { shift->auth_data }
-
-sub auth_data {
- my $self = shift;
- $self->{'auth_data'} = shift if @_ == 1;
- return $self->{'auth_data'};
-}
-
-sub get_valid_auth {
- my $self = shift;
- return 1 if $self->is_authed;
-
- ### augment the args with sensible defaults
- my $args = $self->auth_args;
- $args->{'cgix'} ||= $self->cgix;
- $args->{'form'} ||= $self->form;
- $args->{'cookies'} ||= $self->cookies;
- $args->{'js_uri_path'} ||= $self->js_uri_path;
- $args->{'get_pass_by_user'} ||= sub { my ($auth, $user) = @_; $self->get_pass_by_user($user, $auth) };
- $args->{'verify_user'} ||= sub { my ($auth, $user) = @_; $self->verify_user( $user, $auth) };
- $args->{'cleanup_user'} ||= sub { my ($auth, $user) = @_; $self->cleanup_user( $user, $auth) };
- $args->{'login_print'} ||= sub {
- my ($auth, $template, $hash) = @_;
- my $out = $self->run_hook('swap_template', '__login', $template, $hash);
- $self->run_hook('fill_template', '__login', \$out, $hash);
- $self->run_hook('print_out', '__login', $out);
- };
-
- require CGI::Ex::Auth;
- my $obj = CGI::Ex::Auth->new($args);
- my $resp = $obj->get_valid_auth;
-
- my $data = $obj->last_auth_data;
- delete $data->{'real_pass'} if defined $data; # data may be defined but false
- $self->auth_data($data); # failed authentication may still have auth_data
-
- return ($resp && $data) ? 1 : 0;
-}
-
-sub auth_args { {} }
-
-sub get_pass_by_user { die "get_pass_by_user is a virtual method and needs to be overridden for authentication to work" }
-sub cleanup_user { my ($self, $user) = @_; $user }
-sub verify_user { 1 }
-
-###----------------------------------------------------------------###
-### a few standard base accessors
-
-sub form {
- my $self = shift;
- $self->{'form'} = shift if @_ == 1;
- return $self->{'form'} ||= $self->cgix->get_form;
-}
-
-sub cookies {