diff --git a/Web/lib/MJB/Web/Controller/UserSettings.pm b/Web/lib/MJB/Web/Controller/UserSettings.pm index 2430dbf..f09ab35 100644 --- a/Web/lib/MJB/Web/Controller/UserSettings.pm +++ b/Web/lib/MJB/Web/Controller/UserSettings.pm @@ -2,30 +2,31 @@ package MJB::Web::Controller::UserSettings; use Mojo::Base 'Mojolicious::Controller', -signatures; sub profile ( $c ) { - $c->stash->{form_name} = $c->stash->{person}->name; - $c->stash->{form_email} = $c->stash->{person}->email; + # Set the form values from the DB if they don't exist from the POST handler. + $c->stash->{form}->{name} ||= $c->stash->{person}->name; + $c->stash->{form}->{email} ||= $c->stash->{person}->email; } sub do_profile ( $c ) { - $c->stash->{template} = 'user_settings/profile'; - - my $name = $c->stash->{form_name} = $c->param('name'); - my $email = $c->stash->{form_email} = $c->param('email'); - my $password = $c->stash->{form_password} = $c->param('password'); + my $name = $c->stash->{form}->{name} = $c->param('name'); + my $email = $c->stash->{form}->{email} = $c->param('email'); + my $password = $c->stash->{form}->{password} = $c->param('password'); # Populate errors if we don't have values. - push @{$c->{stash}->{errors}}, "You must enter your name" unless $name; + push @{$c->{stash}->{errors}}, "You must enter your name" unless $name; push @{$c->{stash}->{errors}}, "You must enter your email" unless $email; push @{$c->{stash}->{errors}}, "You must enter your password" unless $password; # Bail out if we have errors now. - return 0 if $c->stash->{errors}; + return $c->redirect_error( 'show_profile' ) + if $c->stash->{errors}; $c->stash->{person}->auth_password->check_password( $password ) or push @{$c->stash->{errors}}, "You must enter your current login password correctly."; # Bail out if we have errors now. - return 0 if $c->stash->{errors}; + return $c->redirect_error( 'show_profile' ) + if $c->stash->{errors}; $c->stash->{person}->name( $name ); $c->stash->{person}->email( $email ); @@ -33,19 +34,17 @@ sub do_profile ( $c ) { $c->stash->{person}->update; # Let the user know the action was successful. - $c->stash->{success} = 1; - $c->stash->{success_message} = "Your records were updated."; + $c->flash( confirmation => "Your records have been updated." ); + $c->redirect_to( $c->url_for( 'show_profile' ) ); } sub change_password ( $c ) { } sub do_change_password ( $c ) { - $c->stash->{template} = 'user_settings/change_password'; - # Get the values the user gave for the password change. - my $password = $c->stash->{form_password} = $c->param('password'); - my $new_pass = $c->stash->{form_new_password} = $c->param('new_password'); - my $confirm = $c->stash->{form_password_confirm} = $c->param('password_confirm'); + my $password = $c->stash->{form}->{password} = $c->param('password'); + my $new_pass = $c->stash->{form}->{new_password} = $c->param('new_password'); + my $confirm = $c->stash->{form}->{password_confirm} = $c->param('password_confirm'); # Populate errors if we don't have values. push @{$c->{stash}->{errors}}, "You must enter your current password" unless $password; @@ -53,13 +52,15 @@ sub do_change_password ( $c ) { push @{$c->{stash}->{errors}}, "You must enter your new password again to confirm" unless $confirm; # Bail out if we have errors now. - return 0 if $c->stash->{errors}; + return $c->redirect_error( 'show_change_password' ) + if $c->stash->{errors}; $c->stash->{person}->auth_password->check_password( $password ) or push @{$c->stash->{errors}}, "You must enter your current login password correctly."; # Bail out if we have errors now. - return 0 if $c->stash->{errors}; + return $c->redirect_error( 'show_change_password' ) + if $c->stash->{errors}; push @{$c->stash->{errors}}, "Password and confirm password must match" unless $new_pass eq $confirm; @@ -68,21 +69,21 @@ sub do_change_password ( $c ) { unless length($new_pass) >= 8; # Bail out if we have errors now. - return if $c->stash->{errors}; + return $c->redirect_error( 'show_change_password' ) + if $c->stash->{errors}; # We can update the password now. $c->stash->{person}->auth_password->update_password($new_pass); # Let the user know the action was successful. - $c->stash->{success} = 1; - $c->stash->{success_message} = "Your password was updated."; - - # Clear the form values on success. - $c->stash->{form_password} = ""; - $c->stash->{form_new_password} = ""; - $c->stash->{form_password_confirm} = ""; + $c->flash( confirmation => "Your password was updated." ); + $c->redirect_to( $c->url_for( 'show_change_password' ) ); } +1; + +__END__ + sub subscription ($c) { my $status = $c->param('status'); diff --git a/Web/templates/user_settings/change_password.html.ep b/Web/templates/user_settings/change_password.html.ep index 0c5302a..32eb89e 100644 --- a/Web/templates/user_settings/change_password.html.ep +++ b/Web/templates/user_settings/change_password.html.ep @@ -9,19 +9,19 @@ <%= include '_base/form/input', type => 'password', name => 'password', title => 'Your current password', help => '', - value => $c->stash->{form_password} + value => $c->stash->{form}->{password} %> <%= include '_base/form/input', type => 'password', name => 'new_password', title => 'Your new password', help => '', - value => $c->stash->{form_new_password} + value => $c->stash->{form}->{new_password} %> <%= include '_base/form/input', type => 'password', name => 'password_confirm', title => 'Confirm your new password', help => '', - value => $c->stash->{form_password_confirm} + value => $c->stash->{form}->{password_confirm} %> diff --git a/Web/templates/user_settings/profile.html.ep b/Web/templates/user_settings/profile.html.ep index ae2893a..beb5375 100644 --- a/Web/templates/user_settings/profile.html.ep +++ b/Web/templates/user_settings/profile.html.ep @@ -9,19 +9,19 @@ <%= include '_base/form/input', type => 'text', name => 'name', title => 'Your name', help => '', - value => $c->stash->{form_name}, + value => $c->stash->{form}->{name}, %> <%= include '_base/form/input', type => 'email', name => 'email', title => 'Email Address', help => '', - value => $c->stash->{form_email}, + value => $c->stash->{form}->{email}, %> <%= include '_base/form/input', type => 'password', name => 'password', title => 'Your password (required for these changes)', help => '', - value => $c->stash->{form_password} + value => $c->stash->{form}->{password} %>