public function processInput($postData) { if (isset($postData['redirectAuth'])) { $authMethods = Kwf_Registry::get('userModel')->getAuthMethods(); if (!isset($authMethods[$postData['redirectAuth']])) { throw new Kwf_Exception_NotFound(); } $auth = $authMethods[$postData['redirectAuth']]; if (!$auth instanceof Kwf_User_Auth_Interface_Redirect) { throw new Kwf_Exception_NotFound(); } $formValues = array(); foreach ($auth->getLoginRedirectFormOptions() as $option) { if ($option['type'] == 'select') { $formValues[$option['name']] = $postData[$option['name']]; } } $redirectBackUrl = Kwf_Setup::getBaseUrl() . '/'; $f = new Kwf_Filter_StrongRandom(); $state = 'activate-' . $postData['redirectAuth'] . '-' . $f->filter(null) . '-' . $postData['code'] . '-' . $redirectBackUrl; //save state in namespace to validate it later $ns = new Kwf_Session_Namespace('kwf-login-redirect'); $ns->state = $state; $url = $auth->getLoginRedirectUrl($this->_getRedirectBackUrl(), $state, $formValues); header("Location: " . $url); exit; } }
public function preProcessInput($postData) { if (isset($postData['redirectAuth'])) { $authMethods = Kwf_Registry::get('userModel')->getAuthMethods(); if (!isset($authMethods[$postData['redirectAuth']])) { throw new Kwf_Exception_NotFound(); } $auth = $authMethods[$postData['redirectAuth']]; if (!$auth instanceof Kwf_User_Auth_Interface_Redirect) { throw new Kwf_Exception_NotFound(); } $redirectBackUrl = $_GET['redirect']; $formValues = array(); foreach ($auth->getLoginRedirectFormOptions() as $option) { if ($option['type'] == 'select') { $formValues[$option['name']] = $postData[$option['name']]; } } $f = new Kwf_Filter_StrongRandom(); $state = 'login.' . $postData['redirectAuth'] . '.' . $f->filter(null) . '.' . $redirectBackUrl; //save state in namespace to validate it later $ns = new Kwf_Session_Namespace('kwf-login-redirect'); $ns->state = $state; $url = $auth->getLoginRedirectUrl($this->_getRedirectBackUrl(), $state, $formValues); if ($url) { header("Location: " . $url); exit; } else { echo $auth->getLoginRedirectHtml($this->_getRedirectBackUrl(), $state, $formValues); exit; } } if ($postData != array() && array_keys($postData) != array('redirect')) { $user = null; foreach (Kwf_Registry::get('userModel')->getAuthMethods() as $auth) { if ($auth instanceof Kwf_User_Auth_Interface_Redirect) { $user = $auth->getUserToLoginByParams($postData); if ($user) { break; } } } if ($user) { Kwf_Registry::get('userModel')->loginUserRow($user, true); $url = $this->_getUrlForRedirect($postData, $user); Kwf_Util_Redirect::redirect($url); } } }
public function redirectAction() { $authMethod = $this->_getParam('authMethod'); $users = Zend_Registry::get('userModel'); $authMethods = $users->getAuthMethods(); if (!isset($authMethods[$authMethod])) { throw new Kwf_Exception_NotFound(); } $f = new Kwf_Filter_StrongRandom(); $state = 'login.' . $authMethod . '.' . $f->filter(null) . '.' . $this->_getParam('redirect'); //save state in namespace to validate it later $ns = new Kwf_Session_Namespace('kwf-login-redirect'); $ns->state = $state; $formValues = array(); foreach ($authMethods[$authMethod]->getLoginRedirectFormOptions() as $option) { if ($option['type'] == 'select') { $formValues[$option['name']] = $this->_getParam($option['name']); } } $url = $authMethods[$authMethod]->getLoginRedirectUrl($this->_getRedirectBackUrl(), $state, $formValues); $this->redirect($url); }