|  |  | 
 |  |  | <?php | 
 |  |  | // Thrown when internal error occurs | 
 |  |  | class JasigException extends Exception {} | 
 |  |  | // Thrown when CAS server return authentication error | 
 |  |  | // Thrown when CAS server returns authentication error | 
 |  |  | class JasigAuthException extends JasigException {} | 
 |  |  |  | 
 |  |  | class JasigUser { | 
 |  |  | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    public function getServerUrl($serverUrl) { | 
 |  |  |    public function getServerUrl() { | 
 |  |  |       return $this->serverUrl; | 
 |  |  |    } | 
 |  |  |    public function setServerUrl($serverUrl) { | 
 |  |  | 
 |  |  |       return $this->serverUrl.'/login?method=POST&service='.urlencode($this->serviceUrl); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    public function logoutUrl() { | 
 |  |  |       return $this->serverUrl.'/logout'; | 
 |  |  |    public function logoutUrl($returnUrl = NULL) { | 
 |  |  |       return $this->serverUrl.'/logout'.($returnUrl ? '?service='.urlencode($returnUrl) : ''); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    public function logout() { | 
 |  |  |    public function logout($returnUrl = NULL) { | 
 |  |  |       session_start(); | 
 |  |  |       if(isset($_SESSION['uphpCAS-user'])) { | 
 |  |  |       if($this->isAuthenticated()) { | 
 |  |  |          unset($_SESSION['uphpCAS-user']); | 
 |  |  |          header('Location: '.$this->logoutUrl($returnUrl)); | 
 |  |  |          die(); | 
 |  |  |       } elseif($returnUrl) { | 
 |  |  |          header('Location: '.$returnUrl); | 
 |  |  |          die(); | 
 |  |  |       } | 
 |  |  |       header('Location: '.$this->logoutUrl()); | 
 |  |  |       die(); | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    public function isAuthenticated() { | 
 |  |  | 
 |  |  |                   break; | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       catch(Exception $e) { | 
 |  |  |       } catch(Exception $e) { | 
 |  |  |          throw new JasigException('Authentication error: CAS server' | 
 |  |  |                .' response invalid - parse error', 0, $e); | 
 |  |  |       } finally { | 
 |  |  | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          $user = trim($user->item(0)->textContent); | 
 |  |  |          if(strlen($user)<1) { | 
 |  |  |          if(strlen($user) < 1) { | 
 |  |  |             throw new JasigException('Authentication error: CAS server' | 
 |  |  |                   .' response invalid - user value'); | 
 |  |  |          } | 
 |  |  | 
 |  |  |          } | 
 |  |  |           | 
 |  |  |          return $jusr; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |       } else { | 
 |  |  |          throw new JasigException('Authentication error: CAS server' | 
 |  |  |                .' response invalid - required tag not found'); | 
 |  |  |       } |