fixed error message display bug in Reset Password
edenc [Tue, 25 Nov 2008 13:26:22 +0000 (13:26 +0000)]
lib/Reaction/InterfaceModel/Action/User/ResetPassword.pm
lib/Reaction/InterfaceModel/Action/User/SetPassword.pm
lib/Reaction/InterfaceModel/Object/User/Role/ConfirmationCodeSupport.pm

index fc57cc2..fdb76a0 100644 (file)
@@ -15,10 +15,19 @@ has 'user' => (
     predicate => 'has_user',
 );
 
+# verification needs to be done here, since there are cases where
+# can_apply doesn't run, such as fields being left blank, invalid, etc.
+around sync_all => sub {
+  my $super = shift;
+  my ($self) = @_;
+  $self->verify_confirmation_code;
+  $self->$super(@_);
+};
+
 around can_apply => sub {
     my $super = shift;
     my ($self) = @_;
-    return 0 unless $self->verify_confirmation_code;
+    return 0 unless $self->has_user;
     return $super->(@_);
 };
 
@@ -29,9 +38,7 @@ sub verify_confirmation_code {
   my $supplied_code = $self->confirmation_code;
   if (defined(my $user = $model->find_by_confirmation_code($supplied_code))) {
     $self->user($user);
-    return 1;
   }
-  return;
 }
 
 around error_for_attribute => sub {
index b9aa5d5..06e56c6 100644 (file)
@@ -26,8 +26,7 @@ around error_for_attribute => sub {
 around can_apply => sub {
   my $super = shift;
   my ($self) = @_;
-  return 0 unless $self->verify_confirm_new_password;
-  return $super->(@_);
+  return $super->(@_) && $self->verify_confirm_new_password;;
 };
 sub verify_confirm_new_password {
   my $self = shift;
index 7538119..4830d08 100644 (file)
@@ -4,6 +4,8 @@ use Reaction::Role;
 use Crypt::Eksblowfish::Bcrypt ();
 use namespace::clean -except => [ qw(meta) ];
 
+requires 'identity_string';
+
 sub generate_confirmation_code {
     my $self = shift;
     my $salt = join(q{}, map { chr(int(rand(256))) } 1 .. 16);
@@ -14,4 +16,4 @@ sub generate_confirmation_code {
     );
 }
 
-1;
\ No newline at end of file
+1;