diff --git a/sites/all/modules/unl/unl_cas.module b/sites/all/modules/unl/unl_cas.module index eee6366cf37c1866796e1102845a2208012ad4b3..aecf15d7ad61bcb08a13324b3c458f3f73a9e332 100644 --- a/sites/all/modules/unl/unl_cas.module +++ b/sites/all/modules/unl/unl_cas.module @@ -5,16 +5,20 @@ function unl_cas_init() require_once dirname(__FILE__) . '/lib/CAS/CAS.php'; phpCAS::client(CAS_VERSION_2_0,'login.unl.edu',443,'/cas'); phpCAS::setNoCasServerValidation(); - phpCAS::handleLogoutRequests(); - if (!array_key_exists('last_sso_check', $_SESSION)) { - $_SESSION['unl']['last_sso_check'] = 0; + // Force a real CAS attempt every hour or whenever the unl_sso cookie disappears. + if ($_SESSION['unl']['last_sso_check'] < time() - 60*60 || + !array_key_exists('unl_sso', $_COOKIE) && phpCAS::isSessionAuthenticated()) + { + unset($_SESSION['phpCAS']['user']); + $_SESSION['unl']['last_sso_check'] = time(); } $auth = FALSE; if (array_key_exists('unl_sso', $_COOKIE)) { $auth = phpCAS::checkAuthentication(); } + if ($auth) { $username = phpCAS::getUser(); $user = user_load_by_name($username); @@ -65,3 +69,14 @@ function unl_cas_import_user($username) $user = user_save(NULL, $userData); return $user; } + +function unl_cas_page_alter(&$page) +{ + $logoutUrl = url('user/logout'); + $ssoScript = <<<EOF +<script type="text/javascript"> + WDN.idm.setLogoutURL('$logoutUrl'); +</script> +EOF; + $page['page_bottom']['sso']['#markup'] = $ssoScript; +} diff --git a/sites/all/themes/unl_wdn/unl_wdn.info b/sites/all/themes/unl_wdn/unl_wdn.info index 2ee0852d7013505f822f93f59507ecd9ca71da5c..39dd67a13b11a6647dc47a3a0dcb5d94028bd2c8 100644 --- a/sites/all/themes/unl_wdn/unl_wdn.info +++ b/sites/all/themes/unl_wdn/unl_wdn.info @@ -5,6 +5,8 @@ core = 7.x engine = phptemplate stylesheets[all][] = style.css regions[content] = Main Content +regions[page_top] = Page top +regions[page_bottom] = Page bottom regions[navlinks] = Navigation Links regions[leftcollinks] = Related Links regions[contactinfo] = Contact Us