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; }
/** * 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())); } } }
/** * 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; }
$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) {
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; } }
/** * 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)); } } }
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") {