/** * Implement this by setting $obj values (e.g. $obj->setId($row->Id) from a DB row * @param GD_Model_Config $obj * @param Zend_Db_Table_Row_Abstract $row */ protected function populateObjectFromRow(&$obj, Zend_Db_Table_Row_Abstract $row) { $obj->setId($row->id)->setProjectsId($row->projects_id)->setDateAdded($row->date_added)->setAddedUsersId($row->added_users_id)->setDateUpdated($row->date_updated)->setUpdatedUsersId($row->updated_users_id)->setFilename($row->filename)->setContent($row->content); $p_map = new GD_Model_ProjectsMapper(); $project = new GD_Model_Project(); $p_map->populateObjectFromRow($project, $row->findParentRow('GD_Model_DbTable_Projects')); $obj->setProject($project); $u_map = new GD_Model_UsersMapper(); $added_user = new GD_Model_User(); $u_map->populateObjectFromRow($added_user, $row->findParentRow('GD_Model_DbTable_Users', 'GD_Model_DbTable_Users+Added')); $obj->setAddedUser($added_user); $updated_user = new GD_Model_User(); $u_map->populateObjectFromRow($updated_user, $row->findParentRow('GD_Model_DbTable_Users', 'GD_Model_DbTable_Users+Updated')); $obj->setUpdatedUser($updated_user); }
public function isValid($value) { $this->_setValue($value); if ($this->_current_user == $value) { return true; } $m_users = new GD_Model_UsersMapper(); $existing_user = $m_users->getUserByName($value, false); if (is_null($existing_user)) { return true; } else { $this->_error(self::ISUNIQUE); return false; } }
/** * Check that the user has an identity (is logged in) and that they have * sufficient access to the resource (page) requested. * * (non-PHPdoc) * @see Zend_Controller_Plugin_Abstract::preDispatch() */ public function preDispatch(Zend_Controller_Request_Abstract $request) { // If we are on the error controller, return immediately to prevent // any database errors happening on error page if ($request->controller == "error") { return; } // First determine what role we have (admin, member or guest) if ($this->_auth->hasIdentity()) { $username = Zend_Auth::getInstance()->getIdentity(); $userMapper = new GD_Model_UsersMapper(); $user = $userMapper->getUserByName($username); if ($user->isAdmin()) { $role = 'admin'; } else { $role = 'member'; } } else { $role = 'guest'; } // Set the initial request - these will be unmodified if access allowed $controller = $request->controller; $action = $request->action; $module = $request->module; $resource = $controller; if (!$this->_acl->has($resource)) { $resource = null; } // Use Zend_Acl to check access permissions if (!$this->_acl->isAllowed($role, $resource, $action)) { if (!$this->_auth->hasIdentity()) { $module = $this->_noauth['module']; $controller = $this->_noauth['controller']; $action = $this->_noauth['action']; } else { $module = $this->_noacl['module']; $controller = $this->_noacl['controller']; $action = $this->_noacl['action']; } } // If the module/controller/action has changed, change the request if ($request->controller != $controller || $request->action != $action || $request->module != $module) { $request->setModuleName($module); $request->setControllerName($controller); $request->setActionName($action); } }
public function changepasswordAction() { $this->view->headTitle('Change Password'); $this->view->headLink()->appendStylesheet("/css/template/form.css"); $this->view->headLink()->appendStylesheet("/css/pages/profile.css"); $form = new GDApp_Form_ChangePassword(); $this->view->form = $form; if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getParams())) { $password = $this->_request->getParam('password'); $crypt = new GD_Crypt(); $user = GD_Auth_Database::GetLoggedInUser(); $userMapper = new GD_Model_UsersMapper(); $user->setPassword($crypt->makeHash($password)); $userMapper->save($user); $this->view->success = true; } } }
/** * Implement this by setting $obj values (e.g. $obj->setId($row->Id) from a DB row * @param GD_Model_Deployment $obj * @param Zend_Db_Table_Row_Abstract $row */ protected function populateObjectFromRow(&$obj, Zend_Db_Table_Row_Abstract $row) { $obj->setId($row->id)->setUsersId($row->users_id)->setProjectsId($row->projects_id)->setWhen($row->when)->setServersId($row->servers_id)->setFromRevision($row->from_revision)->setToRevision($row->to_revision)->setComment($row->comment)->setDeploymentStatusesId($row->deployment_statuses_id); $u_map = new GD_Model_UsersMapper(); $user = new GD_Model_User(); $u_map->populateObjectFromRow($user, $row->findParentRow('GD_Model_DbTable_Users')); $obj->setUser($user); $p_map = new GD_Model_ProjectsMapper(); $project = new GD_Model_Project(); $p_map->populateObjectFromRow($project, $row->findParentRow('GD_Model_DbTable_Projects')); $obj->setProject($project); $s_map = new GD_Model_ServersMapper(); $server = new GD_Model_Server(); $s_map->populateObjectFromRow($server, $row->findParentRow('GD_Model_DbTable_Servers')); $obj->setServer($server); $ds_map = new GD_Model_DeploymentStatusesMapper(); $deployment_status = new GD_Model_DeploymentStatus(); $ds_map->populateObjectFromRow($deployment_status, $row->findParentRow('GD_Model_DbTable_DeploymentStatuses')); $obj->setDeploymentStatus($deployment_status); }
public function userAction() { $this->view->headLink()->appendStylesheet("/css/template/form.css"); $this->view->headLink()->appendStylesheet("/css/pages/project_servers.css"); $users = new GD_Model_UsersMapper(); $user = new GD_Model_User(); $form_options = array(); if ($this->_getParam('id') > 0) { $this->view->headTitle('Edit User'); $users->find($this->_getParam('id'), $user); $form_options['current_user'] = $user->getName(); $form = new GDApp_Form_User($form_options); } else { $this->view->headTitle('Add User'); $form = new GDApp_Form_User(); $form->password->setRequired(true)->setDescription(''); $user->setDateAdded(date("Y-m-d H:i:s")); } $this->view->form = $form; if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getParams())) { if ($this->_getParam('password', false)) { $crypt = new GD_Crypt(); $user->setPassword($crypt->makeHash($this->_getParam('password'))); } $user->setName($this->_getParam('username')); if ($this->_getParam('active')) { $user->enableUser(); } else { $user->disableUser(); } $user->setAdmin($this->_getParam('admin')); $users->save($user); $this->_redirect('/admin'); } } else { $data = array('username' => $user->getName(), 'admin' => $user->isAdmin(), 'active' => $user->isActive()); $form->populate($data); } }
/** * Handy dandy function to get the GD_Model_User object from the currently * logged in Zend_Auth identity. Returns null on failure. * * @return GD_Model_User|null */ public static function GetLoggedInUser() { if (!isset(self::$_currentUser) || is_null(self::$_currentUser) || !self::$_currentUser instanceof GD_Model_User) { $auth = Zend_Auth::getInstance(); $username = $auth->getIdentity(); if (is_null($username)) { return null; } $users = new GD_Model_UsersMapper(); self::$_currentUser = $users->getUserByName($username, true); return self::$_currentUser; } else { return self::$_currentUser; } }
public function dosetupAction() { $this->view->headTitle('Configuration'); $_user_config_file = APPLICATION_PATH . '/configs/config.ini'; // Create the config ini from session $setup_session = new Zend_Session_Namespace('gd_setup_session'); if (!$setup_session->complete) { $config = new Zend_Config(array(), true); $config->database = array(); $config->database->adapter = "PDO_MYSQL"; $config->database->host = $setup_session->database->host; $config->database->username = $setup_session->database->username; $config->database->password = $setup_session->database->password; $config->database->dbname = $setup_session->database->dbname; $writer_opts = array('config' => $config, 'filename' => $_user_config_file); $writer = new Zend_Config_Writer_Ini($writer_opts); try { $writer->write(); } catch (Exception $ex) { if (strpos($ex->getMessage(), 'Could not write to file') !== false) { $setup_session->ini_string = $writer->render(); } } // Load the database manually Zend_Db_Table::setDefaultAdapter(Zend_Db::factory($config->database->adapter, $config->database->toArray())); // Run the appropriate database setup script $db_adm = new GD_Db_Admin($config->database->host, $config->database->username, $config->database->password, $config->database->dbname); $db_adm->installDatabase(); // Set the other config values into database GD_Config::set("language", $setup_session->language ? $setup_session->language : "english"); GD_Config::set("setup_complete", "1"); GD_Config::set("cryptkey", md5(microtime() . $setup_session->admin->username . $setup_session->admin->password)); GD_Config::set("install_date", date("d/m/Y H:i:s")); // Create the first user in the database $userMapper = new GD_Model_UsersMapper(); $crypt = new GD_Crypt(); $user = new GD_Model_User(); $user->setName($setup_session->admin->username)->setPassword($crypt->makeHash($setup_session->admin->password))->setDateAdded(date('Y-m-d H:i:s'))->setAdmin(1)->enableUser(); $userMapper->save($user); // Setup the SSH keypair $ssh_key = new GD_Model_SSHKey(); $ssh_key->setSSHKeyTypesId(1); $ssh_key->generateKeyPair(); //$ssh_key->setId(1); $ssh_keys_map = new GD_Model_SSHKeysMapper(); $ssh_key_id = $ssh_keys_map->save($ssh_key); GD_Config::set("ssh_key_id", $ssh_key_id); $setup_session->complete = true; } if (isset($setup_session->ini_string)) { $this->view->ini = $setup_session->ini_string; } else { $this->_redirect("/setup/complete"); } }