Rework form rendering to use formhandler.

agranig/1_0_subfix
Andreas Granig 12 years ago
parent 7ca48ece05
commit d2d0fef99b

@ -34,12 +34,13 @@ sub index :Path Form {
$form->process( $form->process(
posted => ($c->req->method eq 'POST'), posted => ($c->req->method eq 'POST'),
params => $c->request->params, params => $c->request->params,
action => $c->uri_for($c->controller('Login')->action_for('index')),
); );
if($form->validated) { if($form->validated) {
print ">>>>>> login form validated\n"; print ">>>>>> login form validated\n";
my $user = $form->field('username'); my $user = $form->field('username')->value;
my $pass = $form->field('password'); my $pass = $form->field('password')->value;
$c->log->debug("*** Login::index user=$user, pass=$pass, realm=$realm"); $c->log->debug("*** Login::index user=$user, pass=$pass, realm=$realm");
if($c->authenticate({ username => $user, password => $pass }, $realm)) { if($c->authenticate({ username => $user, password => $pass }, $realm)) {
# auth ok # auth ok
@ -49,7 +50,7 @@ sub index :Path Form {
$c->response->redirect($target); $c->response->redirect($target);
} else { } else {
$c->log->debug("*** Login::index auth failed"); $c->log->debug("*** Login::index auth failed");
$c->stash->{error}->{message} = 'login failed'; $form->add_form_error('Invalid username/password');
} }
} elsif($c->req->method eq 'POST') { } elsif($c->req->method eq 'POST') {
print ">>>>>> login form NOT validated\n"; print ">>>>>> login form NOT validated\n";

@ -4,15 +4,16 @@ use HTML::FormHandler::Moose;
extends 'HTML::FormHandler'; extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints; use Moose::Util::TypeConstraints;
with 'HTML::FormHandler::Widget::Form::Simple';
sub build_form_tags {{ error_class => 'label label-secondary'}}
has_field 'username' => ( has_field 'username' => (
type => 'Text', type => 'Text',
required => 1, required => 1,
element_attr => { placeholder => 'Username' }, element_attr => { placeholder => 'Username' },
element_class => [qw/login username-field/], element_class => [qw/login username-field/],
wrapper_class => [qw/field control-group/], wrapper_class => [qw/login-fields field control-group/],
error_class => [qw/error/], error_class => [qw/error/],
messages => { messages => {
required => 'Please provide a username' required => 'Please provide a username'
@ -24,12 +25,20 @@ has_field 'password' => (
required => 1, required => 1,
element_attr => { placeholder => 'Password' }, element_attr => { placeholder => 'Password' },
element_class => [qw/login password-field/], element_class => [qw/login password-field/],
wrapper_class => [qw/field control-group/], wrapper_class => [qw/login-fields field control-group/],
error_class => [qw/error/], error_class => [qw/error/],
messages => { messages => {
required => 'Please provide a password' required => 'Please provide a password'
}, },
); );
has_field 'submit' => (
type => 'Submit',
value => 'Sign In',
label => '',
element_class => [qw/button btn btn-primary btn-large/],
wrapper_class => [qw/login-actions/],
);
1; 1;
# vim: set tabstop=4 expandtab: # vim: set tabstop=4 expandtab:

@ -1,29 +1,8 @@
<body class="login"> <body class="login">
<!--
[%
USE Dumper;
Dumper.dump(form);
%]
-->
[% IF error.message -%]
<div class="alert alert-error">
<span>[% error.message -%]</span>
</div>
[% END -%]
<div class="account-container login stacked"> <div class="account-container login stacked">
<div class="content clearfix"> <div class="content clearfix">
<form method="post" action="[% c.uri_for("/login/$realm") %]"> <h1>Sign In</h1>
<h1>Sign In</h1> [% form.render %]
<div class="login-fields">
<p>Sign in with your [% realm %] credentials:</p>
[% FOREACH f IN form.sorted_fields -%]
[% f.render -%]
[% END -%]
</div>
<div class="login-actions">
<button id="submit" name="submit" class="button btn btn-primary btn-large">Sign In</button>
</div>
</form>
</div> </div>
</div> </div>
[% IF realm == 'subscriber' -%] [% IF realm == 'subscriber' -%]

Loading…
Cancel
Save