From 8986b75ea855f9129cb8d76349e9a16ceb2a51c6 Mon Sep 17 00:00:00 2001 From: Simon Leary Date: Mon, 26 Jan 2026 09:42:54 -0500 Subject: [PATCH 1/9] refactor session --- resources/init.php | 24 ++++++++------------- resources/templates/header.php | 34 ++++++------------------------ resources/templates/home.php | 2 +- test/functional/ViewAsUserTest.php | 1 - 4 files changed, 17 insertions(+), 44 deletions(-) diff --git a/resources/init.php b/resources/init.php index b3fce862c..3db152f47 100644 --- a/resources/init.php +++ b/resources/init.php @@ -63,27 +63,21 @@ // so we use session cache to remember if they have logged in recently and then pretend // they're logged in even if they aren't if (isset($_SERVER["REMOTE_USER"])) { - // Check if SSO is enabled on this page + $_SESSION["navbar_show_logged_in_pages"] = true; $SSO = UnitySSO::getSSO(); - $_SESSION["SSO"] = $SSO; - - $OPERATOR = new UnityUser($SSO["user"], $LDAP, $SQL, $MAILER, $WEBHOOK); - $_SESSION["is_admin"] = $OPERATOR->getFlag(UserFlag::ADMIN); - $_SESSION["OPERATOR"] = $SSO["user"]; $_SESSION["OPERATOR_IP"] = $_SERVER["REMOTE_ADDR"]; - - if (isset($_SESSION["viewUser"]) && $_SESSION["is_admin"]) { + if ( + isset($_SESSION["viewUser"]) && + $LDAP->userFlagGroups["admin"]->memberUIDExists($SSO["user"]) + ) { $USER = new UnityUser($_SESSION["viewUser"], $LDAP, $SQL, $MAILER, $WEBHOOK); } else { - $USER = $OPERATOR; + $USER = new UnityUser($SSO["user"], $LDAP, $SQL, $MAILER, $WEBHOOK); } - - $_SESSION["user_exists"] = $USER->exists(); - $_SESSION["is_pi"] = $USER->isPI(); - - $SQL->addLog("user_login", $OPERATOR->uid); - + $_SESSION["navbar_show_admin_pages"] = true; + $_SESSION["navbar_show_pi_pages"] = true; + $SQL->addLog("user_login", $SSO["user"]); $USER->updateIsQualified(); // in case manual changes have been made to PI groups if ($USER->getFlag(UserFlag::LOCKED)) { diff --git a/resources/templates/header.php b/resources/templates/header.php index 1426d15c8..ef442790a 100644 --- a/resources/templates/header.php +++ b/resources/templates/header.php @@ -5,10 +5,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { // another page should have already validated and we can't validate the same token twice // UnityHTTPD::validatePostCSRFToken(); - if ( - ($_SESSION["is_admin"] ?? false) == true - && ($_POST["form_type"] ?? null) == "clearView" - ) { + if (($_POST["form_type"] ?? null) == "clearView") { unset($_SESSION["viewUser"]); UnityHTTPD::redirect(getURL("admin/user-mgmt.php")); } @@ -21,13 +18,8 @@ UnityHTTPD::redirect(); } -if (isset($SSO)) { - if ( - !$_SESSION["user_exists"] - && !str_ends_with($_SERVER['PHP_SELF'], "/panel/new_account.php") - ) { - UnityHTTPD::redirect(getURL("panel/new_account.php")); - } +if (isset($USER) && !$USER->exists() && !str_ends_with($_SERVER['PHP_SELF'], "/new_account.php")) { + UnityHTTPD::redirect(getURL("panel/new_account.php")); } ?> @@ -91,7 +83,6 @@