[aur-dev] [PATCH v2 3/3] Set correct 'My Account' link after changing username

Marcel Korpel marcel.korpel at gmail.com
Mon Jul 13 18:01:26 UTC 2015


This fix uses the POST-Redirect-GET pattern to reload the account
update page. Output if buffered to be able to send the correct headers
after the account has been successfully modified.

Signed-off-by: Marcel Korpel <marcel.korpel at gmail.com>
---
 web/html/account.php      | 12 ++++++++++++
 web/lib/acctfuncs.inc.php |  5 +++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/web/html/account.php b/web/html/account.php
index f5e6c19..d6b12aa 100644
--- a/web/html/account.php
+++ b/web/html/account.php
@@ -19,6 +19,13 @@ if (in_array($action, $need_userinfo)) {
 	$PK = implode("\n", account_get_ssh_keys($row["ID"]));
 }
 
+if (in_request("Update") == "Succeeded") {
+	$action = "UpdateSucceeded";
+}
+
+// start output buffering to be able to send headers at a later point
+ob_start();
+
 if ($action == "AccountInfo") {
 	html_header(__('Account') . ' ' . $row['Username']);
 } else {
@@ -102,6 +109,10 @@ if (isset($_COOKIE["AURSID"])) {
 					in_request("K"), in_request("PK"), in_request("J"),
 					in_request("ID"), $row["Username"]);
 		}
+	} elseif ($action == "UpdateSucceeded") {
+		// $tokens[2] contains current username
+		print __("The account, %s%s%s, has been successfully modified.",
+				"<strong>", htmlspecialchars($tokens[2], ENT_QUOTES), "</strong>");
 	} else {
 		if (has_credential(CRED_ACCOUNT_SEARCH)) {
 			# display the search page if they're a TU/dev
@@ -124,4 +135,5 @@ echo "</div>";
 
 html_footer(AURWEB_VERSION);
 
+ob_end_flush();
 ?>
diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php
index b5dc51d..f3927a7 100644
--- a/web/lib/acctfuncs.inc.php
+++ b/web/lib/acctfuncs.inc.php
@@ -356,8 +356,9 @@ function process_account_form($TYPE,$A,$U="",$T="",$S="",$E="",$P="",$C="",
 			print __("No changes were made to the account, %s%s%s.",
 					"<strong>", htmlspecialchars($U,ENT_QUOTES), "</strong>");
 		} else {
-			print __("The account, %s%s%s, has been successfully modified.",
-					"<strong>", htmlspecialchars($U,ENT_QUOTES), "</strong>");
+			// Redirect to account update page containing new username
+			header('HTTP/1.1 303 See Other');
+			header('Location: ' . get_user_uri($U) . 'update/?Update=Succeeded');
 		}
 	}
 }
-- 
2.4.5


More information about the aur-dev mailing list