diff --git a/lib/NGCP/Panel/Controller/Login.pm b/lib/NGCP/Panel/Controller/Login.pm index fa58f78e13..c6e5701859 100644 --- a/lib/NGCP/Panel/Controller/Login.pm +++ b/lib/NGCP/Panel/Controller/Login.pm @@ -4,6 +4,8 @@ use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } +use NGCP::Panel::Form::Login; + =head1 NAME NGCP::Panel::Controller::Login - Catalyst Controller @@ -28,11 +30,16 @@ sub index :Path Form { $realm = 'subscriber' unless($realm and ($realm eq 'admin' or $realm eq 'reseller')); - my $user = $c->request->param('username'); - my $pass = $c->request->param('password'); - $c->log->debug("*** Login::index user=$user, pass=$pass, realm=$realm"); + my $form = NGCP::Panel::Form::Login->new; + $form->process( + posted => ($c->req->method eq 'POST'), + params => $c->request->params, + ); - if($user && $pass) { + if($form->validated) { + print ">>>>>> login form validated\n"; + my $user = $form->field('username'); + my $pass = $form->field('password'); $c->log->debug("*** Login::index user=$user, pass=$pass, realm=$realm"); if($c->authenticate({ username => $user, password => $pass }, $realm)) { # auth ok @@ -44,12 +51,14 @@ sub index :Path Form { $c->log->debug("*** Login::index auth failed"); $c->stash->{error}->{message} = 'login failed'; } + } elsif($c->req->method eq 'POST') { + print ">>>>>> login form NOT validated\n"; + $c->stash->{error}->{message} = 'invalid form'; } else { - if($user || $pass) { - $c->stash->{error}->{message} = 'invalid form'; - } + # initial get } + $c->stash(form => $form); $c->stash(realm => $realm); $c->stash(template => 'login.tt'); } diff --git a/lib/NGCP/Panel/Form/Login.pm b/lib/NGCP/Panel/Form/Login.pm new file mode 100644 index 0000000000..8846598577 --- /dev/null +++ b/lib/NGCP/Panel/Form/Login.pm @@ -0,0 +1,35 @@ +package NGCP::Panel::Form::Login; + +use HTML::FormHandler::Moose; +extends 'HTML::FormHandler'; +use Moose::Util::TypeConstraints; + + + + +has_field 'username' => ( + type => 'Text', + required => 1, + element_attr => { placeholder => 'Username' }, + element_class => [qw/login username-field/], + wrapper_class => [qw/field/], + error_class => [qw/foobar error/], + messages => { + required => 'Please provide a username' + }, +); + +has_field 'password' => ( + type => 'Password', + required => 1, + element_attr => { placeholder => 'Password' }, + element_class => [qw/login password-field/], + wrapper_class => [qw/field/], + error_class => [qw/foobar error/], + messages => { + required => 'Please provide a password' + }, +); + +1; +# vim: set tabstop=4 expandtab: diff --git a/share/templates/login.tt b/share/templates/login.tt index fa23735a98..2a02350bec 100644 --- a/share/templates/login.tt +++ b/share/templates/login.tt @@ -1,4 +1,10 @@ + [% IF error.message -%]
[% error.message -%] @@ -6,25 +12,16 @@ [% END -%]
-
+

Sign In