fix missing username/password in Login controller
Caleb Cushing [Thu, 31 Dec 2009 13:14:40 +0000 (13:14 +0000)]
|| "" is reduntant if no credential is found it will already be empty.
defined()  will always return true check to see if variables are empty instead.
add an else and appropriate error message in the event all credentials weren't
submitted.

lib/Catalyst/Manual/Tutorial/05_Authentication.pod

index 777913c..ec3a748 100644 (file)
@@ -388,11 +388,11 @@ and update the definition of C<sub index> to match:
         my ($self, $c) = @_;
     
         # Get the username and password from form
-        my $username = $c->request->params->{username} || "";
-        my $password = $c->request->params->{password} || "";
+        my $username = $c->request->params->{username};
+        my $password = $c->request->params->{password};
     
         # If the username and password values were found in form
-        if (defined($username) && defined($password)) {
+        if ($username && $password) {
             # Attempt to log the user in
             if ($c->authenticate({ username => $username,
                                    password => $password  } )) {
@@ -404,6 +404,9 @@ and update the definition of C<sub index> to match:
                 # Set an error message
                 $c->stash->{error_msg} = "Bad username or password.";
             }
+        } else {
+            # Set an error message
+            $c->stash->{error_msg} = "Empty username or password.";
         }
     
         # If either of above don't work out, send to the login page