# 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 ) { $self->redirect( { rm => 'first_panel' } ); } else { # It could store some useful info in a session, # for example the error message. # $self->redirect( { rm => 'login' } ); } return; }