# Does nothing except printing the form. # Using sessions you can pass to it an error_message, # for example. # sub login { my $self = shift; my $tmpl = $self->load_tmpl( 'login' ); return $tmpl->output(); } sub login_update { my $self = shift; my $q = $self->query; # Fetch username and password from the form # if ( PASSWORD CORRECT ) { return $self->first_panel; } else { # It could store some useful info in a session, # for example the error message. # return $self->login; } # You have a problem if this return ever actually executed #return; }