예제 #1
0
function do_login()
{
    $status = "";
    if (!empty($_POST['openid_identifier'])) {
        $sreg = new Zend_OpenId_Extension_Sreg(array('nickname' => false, 'email' => false, 'fullname' => false), null, 1.1);
        $consumer = new Zend_OpenId_Consumer();
        if (!$consumer->login($_POST['openid_identifier'], '', null, $sreg)) {
            $status = "FAILED";
        }
    } else {
        if (isset($_GET['openid_mode'])) {
            if ($_GET['openid_mode'] == "id_res") {
                $consumer = new Zend_OpenId_Consumer();
                $sreg = new Zend_OpenId_Extension_Sreg(array('nickname' => false, 'email' => false, 'fullname' => false), null, 1.1);
                if ($consumer->verify($_GET, $id, $sreg)) {
                    $_SESSION['logged_in_user'] = true;
                    $status = true;
                    $open_id_addr = $_GET['openid_identity'];
                    if (strpos($open_id_addr, 'https') === 1) {
                        $open_id_addr = str_replace('https', 'http', $open_id_addr);
                    }
                    //$_SESSION['user_info'] = array();
                    //$_SESSION['user_info']['open_id'] = $_GET['openid_identity'];
                    /*
                    	$data = $sreg->getProperties();
                        if (isset($data['nickname'])) {
                            $status .= "<br>nickname: " . htmlspecialchars($data['nickname']) . "<br>\n";
                    		$_SESSION['user_info']['nickname'] = htmlspecialchars($data['nickname']);
                        }
                        if (isset($data['email'])) {
                            $status .= "email: " . htmlspecialchars($data['email']) . "<br>\n";
                    		$_SESSION['user_info']['email'] = htmlspecialchars($data['email']);
                    				
                        }
                        if (isset($data['fullname'])) {
                            $status .= "fullname: " . htmlspecialchars($data['fullname']) . "<br>\n";
                    		$_SESSION['user_info']['fullname'] = htmlspecialchars($data['fullname']);
                    				
                        }
                    */
                    login_user($open_id_addr);
                } else {
                    $status = "INVALID " . htmlspecialchars($id);
                }
            } else {
                if ($_GET['openid_mode'] == "cancel") {
                    $status = "CANCELED";
                }
            }
        }
    }
    return $status;
}
예제 #2
0
 /**
  * Authenticates the given OpenId identity.
  * Defined by Zend_Auth_Adapter_Interface.
  *
  * @throws Zend_Auth_Adapter_Exception If answering the authentication query is impossible
  * @return Zend_Auth_Result
  */
 public function authenticate()
 {
     $id = $this->_id;
     if (!empty($id)) {
         $consumer = new Zend_OpenId_Consumer($this->_storage);
         $consumer->setHttpClient($this->_httpClient);
         /* login() is never returns on success */
         if (!$this->_check_immediate) {
             if (!$consumer->login($id, $this->_returnTo, $this->_root, $this->_extensions, $this->_response)) {
                 return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, $id, array("Authentication failed", $consumer->getError()));
             }
         } else {
             if (!$consumer->check($id, $this->_returnTo, $this->_root, $this->_extensions, $this->_response)) {
                 return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, $id, array("Authentication failed", $consumer->getError()));
             }
         }
     } else {
         $params = isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST' ? $_POST : $_GET;
         $consumer = new Zend_OpenId_Consumer($this->_storage);
         $consumer->setHttpClient($this->_httpClient);
         if ($consumer->verify($params, $id, $this->_extensions)) {
             return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $id, array("Authentication successful"));
         } else {
             return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, $id, array("Authentication failed", $consumer->getError()));
         }
     }
 }
예제 #3
0
 /**
  *    openidAction
  *
  *    Blah
  */
 public function openidAction()
 {
     $auth = Zend_Auth::getInstance();
     // Get url helper
     $urlHelper = $this->_helper->getHelper('url');
     // if user is already logged in redirect away from here
     if ($auth->hasIdentity()) {
         $target = $urlHelper->url(array('controller' => 'index', 'action' => 'index', 'language' => $this->view->language), 'lang_default', true);
         $this->_redirect($target);
     }
     // end if
     // if openid provider returns data
     //$status = "";
     if (isset($_POST['openid_action']) && !empty($_POST['openid_identifier'])) {
         $consumer = new Zend_OpenId_Consumer();
         if (!$consumer->login($_POST['openid_identifier'])) {
             //$status = "LOGIN FAILED";
             $this->view->errormsg = $this->view->translate('account-openid-login-not-successful');
         }
     } else {
         if (isset($_GET['openid_mode'])) {
             if ($_GET['openid_mode'] == "id_res") {
                 $consumer = new Zend_OpenId_Consumer();
                 if ($consumer->verify($_GET, $id)) {
                     $formOptions = htmlspecialchars($id);
                     $userProfiles = new Default_Model_UserProfiles();
                     $openIdResults = $userProfiles->searchUserOpenid($formOptions);
                     // if attached openid is found
                     if ($openIdResults) {
                         $userid = $openIdResults['id_usr_usp'];
                         //$status = "VALID " . $formOptions . " / " . $userid;
                         $user = new Default_Model_User($userid);
                         $user->loginSuccess();
                         $identity = $user->createAuthIdentity();
                         $auth->getStorage()->write($identity);
                         $target = $urlHelper->url(array('controller' => 'index', 'action' => 'index', 'language' => $this->view->language), 'lang_default', true);
                         $this->_redirect($target);
                     } else {
                         //$status = "INVALID, NO ATTACHED OPENID FOUND FOR " . $formOptions;
                         $this->view->errormsg = $this->view->translate('account-openid-login-not-successful');
                     }
                 } else {
                     //$status = "INVALID " . htmlspecialchars($id);
                     $this->view->errormsg = $this->view->translate('account-openid-login-not-successful');
                 }
             } else {
                 if ($_GET['openid_mode'] == "cancel") {
                     //$status = "CANCELLED";
                     $this->view->errormsg = $this->view->translate('account-openid-login-not-successful');
                 }
             }
         }
     }
     //echo $status;
     $form = new Default_Form_OpenIDLoginForm();
     $this->view->form = $form;
 }
예제 #4
0
                    $props[$prop] = false;
                }
            }
        }
    }
    $sreg = new Zend_OpenId_Extension_Sreg($props, null, 1.1);
    $id = $_POST['openid_identifier'];
    if (!$consumer->login($id, null, null, $sreg)) {
        $status = "OpenID login failed (" . $consumer->getError() . ")";
    }
} else {
    if (isset($_GET['openid_mode'])) {
        if ($_GET['openid_mode'] == "id_res") {
            $sreg = new Zend_OpenId_Extension_Sreg();
            $consumer = new Zend_OpenId_Consumer();
            if ($consumer->verify($_GET, $id, $sreg)) {
                $status = "VALID {$id}";
                $data = $sreg->getProperties();
            } else {
                $status = "INVALID {$id} (" . $consumer->getError() . ")";
            }
        } else {
            if ($_GET['openid_mode'] == "cancel") {
                $status = "CANCELED";
            }
        }
    }
}
$sreg_html = "";
$sreg = new Zend_OpenId_Extension_Sreg();
foreach (Zend_OpenId_Extension_Sreg::getSregProperties() as $prop) {
예제 #5
0
 function eventCheckOpenIdCallBack(EventControler $eventControler)
 {
     if (!file_exists("Zend/OpenId/Consumer.php")) {
         return false;
     }
     $message_status = "";
     if ($_GET['openid_mode'] == 'id_res') {
         $consumer = new Zend_OpenId_Consumer();
         if ($consumer->verify($_GET, $this->openid_identifier)) {
             //$conx = $eventControler->getDbCon();
             $qCheck = new sqlQuery($this->getDbCon());
             $eventControler->setLog("\n OpenId check," . $this->openid_identifier . " table:" . $this->getTable());
             $this->query("select * from `" . $this->getTable() . "` where `openid`='" . $this->openid_identifier . "'");
             $eventControler->setLog("\n Query executed for sign on:" . $this->getSqlQuery());
             $eventControler->setLog("\n RegPage:" . $this->openid_regPage . " goto:" . $this->openid_goto . " errPage:" . $this->openid_errPage);
             if ($qCheck->getNumrows() == 1) {
                 $userdata = array();
                 $userdata['id'] = $this->getPrimaryKeyValue();
                 //$userdata['id'] = $this->iduser;
                 $userdata['firstname'] = $this->firstname;
                 $userdata['lastname'] = $this->lastname;
                 $userdata['email'] = $this->{$this->getEmailField()};
                 $userdata['username'] = $this->{$this->getUsernameField()};
                 if ($this->isadmin) {
                     $userdata['isadmin'] = 1;
                 }
                 $userdata['user_table'] = $user_table;
                 $_SESSION['userdata'] = $userdata;
                 if (!$this->isPersistent()) {
                     $this->sessionPersistent("do_" . $this->getObjectName(), "signout.php", 36000);
                 }
                 $eventControler->goto = $this->openid_goto;
                 $eventControler->setUrlNext($this->openid_goto);
                 return true;
             } else {
                 $eventControler->setLog("\n this user need to register:" . $this->openid_regPage);
                 $eventControler->goto = $this->openid_regPage;
                 $eventControler->setUrlNext($this->openid_regPage);
                 $eventControler->setLog("\n Redirected set to:" . $eventControler->getUrlNext());
                 return true;
             }
         } else {
             $message_status = 'The OpenID is invalid.';
         }
     } elseif ($_GET['openid_mode'] == 'cancel') {
         $message_status = 'The OpenID login was cancelled.';
     } else {
         $message_status = 'The OpenID is invalid.';
     }
     if (!empty($message_status)) {
         $err_disp = new Display($this->openid_errPage);
         $err_disp->addParam("openidmessage", $message_status);
         $eventControler->setDisplayNext($err_disp);
         return false;
     }
 }
예제 #6
0
 /**
  * This method is responsible for the complete OpenID authentication process.
  * In some cases this method does not return, for a redirect is done internally
  * by Zend.
  * 
  * @return Zend_Auth_Result
  */
 public function authenticate()
 {
     $app = Erfurt_App::getInstance();
     $this->_store = $app->getStore();
     // Check whether OpenId is supported (big integer support is needed.)
     if (!$this->_isOpenIdSupported()) {
         $result = false;
         $msg = 'OpenID is currently not supported!';
         require_once 'Zend/Auth/Result.php';
         return new Zend_Auth_Result($result, null, array($msg));
     }
     // If id is given, login the user.
     if (null !== $this->_id) {
         // If sReg is given, we want to register, so don't check whether user exists.
         // If it is not given, we need to check whether the user exists and is allowed
         // to login.
         if (null === $this->_sReg) {
             $userResult = $this->_checkOpenId($this->_id);
             if ($userResult['userUri'] === false) {
                 $result = false;
                 $msg = 'User (' . $this->_id . ') does not exist!';
                 require_once 'Zend/Auth/Result.php';
                 return new Zend_Auth_Result($result, null, array($msg));
             }
             if ($userResult['denyLogin'] === true) {
                 $result = false;
                 $msg = 'Login not allowed!';
                 require_once 'Zend/Auth/Result.php';
                 return new Zend_Auth_Result($result, null, array($msg));
             }
         }
         if (null !== $this->_redirectUrl) {
             // This is a hack, for the setHttpClient method in Zend_OpenId_Consumer seems not to work.
             $this->_verifyUrl = $this->_verifyUrl . '/?ow_redirect_url=' . urlencode($this->_redirectUrl);
         }
         require_once 'Zend/OpenId/Consumer.php';
         $consumer = new Zend_OpenId_Consumer();
         if (!$consumer->login($this->_id, $this->_verifyUrl, null, $this->_sReg)) {
             $result = false;
             $msg = 'OpenID authentication failed.';
             require_once 'Zend/Auth/Result.php';
             return new Zend_Auth_Result($result, null, array($msg));
         }
         // This point is never reached, for there will be a redirect on successful login.
     } else {
         // If no id is given, verify the result.
         if (!isset($this->_get['openid_identity'])) {
             $result = false;
             $msg = 'OpenID authentication failed.';
             /*
             $identity = array(
                 'uri'       => null, 
                 'dbuser'    => false, 
                 'anonymous' => false
             );
             */
             require_once 'Zend/Auth/Result.php';
             return new Zend_Auth_Result($result, null, array($msg));
         }
         $identity = array('uri' => $this->_get['openid_identity'], 'dbuser' => false, 'anonymous' => false, 'is_openid_user' => true);
         // This is just called in order to get the label for the user.
         $userResult = $this->_checkOpenId($this->_get['openid_identity']);
         if (isset($userResult['userLabel'])) {
             $identity['label'] = $userResult['userLabel'];
         }
         if (isset($userResult['username'])) {
             $identity['username'] = $userResult['username'];
         }
         if (isset($userResult['email'])) {
             $identity['email'] = $userResult['email'];
         }
         require_once 'Zend/OpenId/Consumer.php';
         $consumer = new Zend_OpenId_Consumer();
         if (!$consumer->verify($this->_get, $this->_get['openid_identity'], $this->_sReg)) {
             $result = false;
             $msg = 'OpenID authentication failed.';
             require_once 'Zend/Auth/Result.php';
             return new Zend_Auth_Result($result, null, array($msg));
         } else {
             $result = true;
             $msg = 'OpenID authentication successful.';
             require_once 'Erfurt/Auth/Identity.php';
             $identityObject = new Erfurt_Auth_Identity($identity);
             require_once 'Zend/Auth/Result.php';
             return new Zend_Auth_Result($result, $identityObject, array($msg));
         }
     }
 }
예제 #7
0
파일: login.php 프로젝트: wAmpIre/netmon
         die;
     }
 } elseif (isset($_POST['openid_identifier']) or isset($_GET['openid_mode'])) {
     $status = "";
     if (!empty($_POST['openid_identifier'])) {
         //login initiation
         $consumer = new Zend_OpenId_Consumer();
         if (!$consumer->login($_POST['openid_identifier'], "login.php?section=login_send&remember=" . $_POST['remember'])) {
             $status = "OpenID Login fehlgeschlagen.";
         }
     } else {
         if (isset($_GET['openid_mode'])) {
             //login result from openid server
             if ($_GET['openid_mode'] == "id_res") {
                 $consumer = new Zend_OpenId_Consumer();
                 if ($consumer->verify($_GET, $id)) {
                     $user_data = User_old::getUserByOpenID($id);
                     if (empty($user_data)) {
                         $messages[] = array("Mit dieser Open-ID ist kein gültiger Benutzer verknüpft.", 2);
                         Message::setMessage($messages);
                         header('Location: login.php');
                         die;
                     }
                 } else {
                     $messages[] = array("Diese Identität ist nicht gültig.", 2);
                     Message::setMessage($messages);
                     header('Location: login.php');
                     die;
                 }
             } else {
                 if ($_GET['openid_mode'] == "cancel") {