From 3dee673a84e49ccf828a378b4d9a59e8d6931f82 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Thu, 13 Feb 2014 15:59:13 -0600
Subject: [PATCH] When doing CAS logouts, support a baseUrl with schema and
 host specified.

---
 library/Unl/Controller/Action/Authenticate.php | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/library/Unl/Controller/Action/Authenticate.php b/library/Unl/Controller/Action/Authenticate.php
index 12de3e8..3679925 100644
--- a/library/Unl/Controller/Action/Authenticate.php
+++ b/library/Unl/Controller/Action/Authenticate.php
@@ -47,15 +47,19 @@ abstract class Unl_Controller_Action_Authenticate extends Unl_Controller_Action
     {
         $this->_destroyUser(Zend_Auth::getInstance()->getIdentity());
         Zend_Auth::getInstance()->clearIdentity();
-        
-        if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
-            $returnUrl = 'https://';
+
+        $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
+        if (parse_url($baseUrl, PHP_URL_SCHEME)) {
+            $returnUrl = $baseUrl;
         } else {
-            $returnUrl = 'http://';
+            if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
+                $returnUrl = 'https://';
+            } else {
+                $returnUrl = 'http://';
+            }
+            $returnUrl .= $_SERVER['SERVER_NAME'] . $baseUrl;
         }
         
-        $returnUrl .= $_SERVER['SERVER_NAME'] . Zend_Controller_Front::getInstance()->getBaseUrl();
-        
         $logoutUrl = $this->_getCasAdapter()->getLogoutUrl($returnUrl);
         $this->_redirect($logoutUrl);
     }
-- 
GitLab