/** * allows a user to signup for an account * */ public function signupAction() { $realm = $this->_getParam('realm', null); if (is_null($realm)) { throw new Ot_Exception_Input('msg-error-realmNotFound'); } // Set up the auth adapter $authAdapter = new Ot_Model_DbTable_AuthAdapter(); $adapter = $authAdapter->find($realm); if (is_null($adapter)) { throw new Ot_Exception_Data($this->view->translate('ot-login-signup:realmNotFound', array('<b>' . $realm . '</b>'))); } if ($adapter->enabled == 0) { throw new Ot_Exception_Access('msg-error-authNotSupported'); } $className = (string) $adapter->class; $auth = new $className(); if (!$auth->manageLocally()) { throw new Ot_Exception_Access('msg-error-authNotSupported'); } if (!$auth->allowUserSignUp()) { throw new Ot_Exception_Access('msg-error-authNotAllowed'); } $form = new Ot_Form_Signup(); $form->removeElement('realm'); if ($this->_request->isPost()) { if ($form->isValid($_POST)) { if ($form->getValue('password') == $form->getValue('passwordConf')) { $accountData = array('username' => $form->getValue('username'), 'password' => md5($form->getValue('password')), 'realm' => $realm, 'role' => $this->_helper->configVar('newAccountRole'), 'emailAddress' => $form->getValue('emailAddress'), 'firstName' => $form->getValue('firstName'), 'lastName' => $form->getValue('lastName'), 'timezone' => $form->getValue('timezone')); $account = new Ot_Model_DbTable_Account(); if ($account->accountExists($accountData['username'], $accountData['realm'])) { $this->_helper->messenger->addError('msg-error-usernameTaken'); } else { $dba = Zend_Db_Table::getDefaultAdapter(); $dba->beginTransaction(); try { $accountData['accountId'] = $account->insert($accountData); $aar = new Ot_Account_Attribute_Register(); $vars = $aar->getVars($accountData['accountId']); $values = $form->getValues(); foreach ($vars as $varName => $var) { if (isset($values['accountAttributes'][$varName])) { $var->setValue($values['accountAttributes'][$varName]); $aar->save($var, $accountData['accountId']); } } $cahr = new Ot_CustomAttribute_HostRegister(); $thisHost = $cahr->getHost('Ot_Profile'); if (is_null($thisHost)) { throw new Ot_Exception_Data('msg-error-objectNotSetup'); } $customAttributes = $thisHost->getAttributes($accountData['accountId']); foreach ($customAttributes as $attributeName => $a) { if (array_key_exists($attributeName, $values['customAttributes'])) { $a['var']->setValue($values['customAttributes'][$attributeName]); $thisHost->saveAttribute($a['var'], $accountData['accountId'], $a['attributeId']); } } } catch (Exception $e) { $dba->rollback(); throw $e; } $dba->commit(); $loggerOptions = array('attributeName' => 'accountId', 'attributeId' => $accountData['accountId']); $this->_helper->log(Zend_Log::INFO, 'User ' . $accountData['username'] . ' created an account.', $loggerOptions); $dt = new Ot_Trigger_Dispatcher(); $dt->setVariables($accountData); $dt->password = $form->getValue('password'); $dt->loginMethod = $realm; $dt->dispatch('Login_Index_Signup'); $authAdapterModel = new Ot_Model_DbTable_AuthAdapter(); $adapter = $authAdapterModel->find($realm); $className = (string) $adapter->class; // Set up the authentication adapter $authAdapter = new $className($accountData['username'], $form->getValue('password')); $auth = Zend_Auth::getInstance(); $authRealm = new Zend_Session_Namespace('authRealm'); $authRealm->setExpirationHops(1); $authRealm->realm = $realm; $authRealm->autoLogin = $authAdapter->autoLogin(); // Attempt authentication, saving the result $result = $auth->authenticate($authAdapter); $authRealm->unsetAll(); $req = new Zend_Session_Namespace(Zend_Registry::get('siteUrl') . '_request'); $this->_helper->messenger->addSuccess('msg-info-accountCreated'); if ($result->isValid()) { $account = new Ot_Model_DbTable_Account(); $thisAccount = $account->getByUsername($accountData['username'], $realm); $auth->getStorage()->write($thisAccount); if (isset($req->uri) && $req->uri != '') { $uri = $req->uri; $req->unsetAll(); $this->_helper->redirector->gotoUrl($uri); } else { $this->_helper->redirector->gotoRoute(array(), 'default', true); } } else { $this->_helper->redirector->gotoRoute(array('realm' => $realm), 'login', true); } } } else { $this->_helper->messenger->addError('msg-error-passwordsNotMatch'); } } else { $this->_helper->messenger->addError('msg-error-invalidFormInfo'); } } $this->_helper->pageTitle('ot-login-signup:title'); $this->view->headScript()->appendFile($this->view->baseUrl() . '/scripts/ot/jquery.plugin.passStrength.js'); $this->view->assign(array('realm' => $realm, 'form' => $form)); }
/** * allows a user to change their password * */ public function changePasswordAction() { $identity = Zend_Auth::getInstance()->getIdentity(); $account = new Ot_Model_DbTable_Account(); $thisAccount = $account->getByUsername($identity->username, $identity->realm); if (is_null($thisAccount)) { throw new Ot_Exception_Data('msg-error-noAccount'); } $otAuthAdapter = new Ot_Model_DbTable_AuthAdapter(); $thisAdapter = $otAuthAdapter->find($thisAccount->realm); $auth = new $thisAdapter->class(); if (!$auth->manageLocally()) { throw new Ot_Exception_Access('msg-error-authAdapterSupport'); } $form = new Ot_Form_ChangePassword(); if ($this->_request->isPost()) { if ($form->isValid($_POST)) { if ($form->getValue('newPassword') != $form->getValue('newPasswordConf')) { $this->_helper->messenger->addError('msg-error-passwordMismatch'); } if (md5($form->getValue('oldPassword')) != $thisAccount->password) { $this->_helper->messenger->addError('msg-error-passwordInvalidOriginal'); } if ($this->_helper->messenger->count('error') == 0) { $data = array('accountId' => $thisAccount->accountId, 'password' => md5($form->getValue('newPassword'))); $account->update($data, null); $this->_helper->messenger->addSuccess('msg-info-passwordChanged'); $loggerOptions = array('attributeName' => 'accountId', 'attributeId' => $thisAccount->accountId); $this->_helper->log(Zend_Log::INFO, 'User changed Password', $loggerOptions); $this->_helper->redirector->gotoRoute(array(), 'account', true); } } else { $this->_helper->messenger->addError('msg-error-invalidForm'); } } $this->view->headScript()->appendFile($this->view->baseUrl() . '/public/scripts/ot/jquery.plugin.passStrength.js'); $this->_helper->pageTitle('ot-account-changePassword:title'); $this->view->assign(array('form' => $form)); }
/** * Allows for the editing of the meta data attached to an auth adapter * * @throws Ot_Exception_Input * @throws Ot_Exception_Data */ public function editAction() { $key = $this->_getParam('key', null); if (is_null($key)) { throw new Ot_Exception_Data('ot-auth-toggle:keyNotSet'); } $authAdapter = new Ot_Model_DbTable_AuthAdapter(); $adapter = $authAdapter->find($key); if (is_null($adapter)) { throw new Ot_Exception_Data('ot-auth-toggle:noAdapter'); } $form = new Ot_Form_AuthAdapter(); $form->populate($adapter->toArray()); if ($this->_request->isPost()) { if ($form->isValid($_POST)) { $data = array('adapterKey' => $adapter->adapterKey, 'name' => $form->getValue('name'), 'description' => $form->getValue('description')); $authAdapter->update($data, null); $this->_helper->redirector->gotoRoute(array('controller' => 'auth'), 'ot', true); } else { $this->_helper->messenger->addError('ot-auth-edit:problemSubmitting'); } } $this->_helper->pageTitle('ot-auth-edit:title', $adapter->name); $this->view->assign(array('form' => $form)); }
protected function _mergeAccountData(Zend_Db_Table_Row $data) { $data = (object) $data->toArray(); $accountRolesModel = new Ot_Model_DbTable_AccountRoles(); $rolesModel = new Ot_Model_DbTable_Role(); $select = $this->getAdapter()->select()->from(array('a' => $accountRolesModel->info('name')))->join(array('r' => $rolesModel->info('name')), 'a.roleId = r.roleId')->where('accountId = ?', $data->accountId); $stmt = $select->query(); $roles = $stmt->fetchAll(); $roleList = array(); foreach ($roles as $r) { $roleList[$r['name']] = $r['roleId']; } $data->role = $roleList; $aar = new Ot_Account_Attribute_Register(); $vars = $aar->getVars($data->accountId); $data->accountAttributes = array(); foreach ($vars as $varName => $var) { $data->accountAttributes[$varName] = $var; } $cahr = new Ot_CustomAttribute_HostRegister(); $thisHost = $cahr->getHost('Ot_Profile'); $attributes = $thisHost->getAttributes($data->accountId); $data->customAttributes = array(); foreach ($attributes as $a) { $data->customAttributes[$a['var']->getName()] = $a['var']; } $authAdapter = new Ot_Model_DbTable_AuthAdapter(); $adapter = $authAdapter->find($data->realm); $data->authAdapter = array('obj' => new $adapter->class(), 'enabled' => $adapter->enabled, 'name' => $adapter->name, 'description' => $adapter->description); return $data; }