fix contact self-service password reset link vs. outlook, RT#32657
authorIvan Kohler <ivan@freeside.biz>
Sun, 28 Dec 2014 22:19:44 +0000 (14:19 -0800)
committerIvan Kohler <ivan@freeside.biz>
Sun, 28 Dec 2014 22:19:44 +0000 (14:19 -0800)
FS/FS/msg_template/InitialData.pm
fs_selfservice/FS-SelfService/cgi/selfservice.cgi

index a21c2d5..a4e27fd 100644 (file)
@@ -10,7 +10,7 @@ sub _initial_data {
       _insert_args => [ subject => '{ $company_name } password reset',
                         body    => <<'END',
 To complete your { $company_name } password reset, please go to
-<a href="{ $selfservice_server_base_url }/selfservice.cgi?action=process_forgot_password;session_id={ $session_id }">{ $selfservice_server_base_url }/selfservice.cgi?action=process_forgot_password;session_id={ $session_id }</a><br />
+<a href="{ $selfservice_server_base_url }/selfservice.cgi?action=process_forgot_password_session_{ $session_id }">{ $selfservice_server_base_url }/selfservice.cgi?action=process_forgot_password_session_{ $session_id }</a><br />
 <br />
 This link will expire in 24 hours.<br />
 <br />
index b008fbf..4ccf1de 100755 (executable)
@@ -88,12 +88,17 @@ my @nologin_actions = (qw(
   do_forgot_password
   process_forgot_password
   do_process_forgot_password
+  process_forgot_password_session
 ));
 push @actions, @nologin_actions;
 my %nologin_actions = map { $_=>1 } @nologin_actions;
 
 my $action = 'myaccount'; # sensible default
-if ( $cgi->param('action') =~ /^(\w+)$/ ) {
+
+if ( $cgi->param('action') =~ /^process_forgot_password_session_(\w+)$/ ) {
+  $action = 'process_forgot_password_session';
+  $session_id = $1;
+} elsif ( $cgi->param('action') =~ /^(\w+)$/ ) {
   if (grep {$_ eq $1} @actions) {
     $action = $1;
   } else {
@@ -1051,6 +1056,12 @@ sub process_forgot_password {
   );
 }
 
+sub process_forgot_password_session {
+  check_reset_passwd(
+    'session_id' => $session_id,
+  );
+}
+
 sub do_process_forgot_password {
   process_reset_passwd(
     map { $_ => scalar($cgi->param($_)) }