예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 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;
     }
 }
예제 #3
0
파일: Auth.php 프로젝트: rodrigorm/godeploy
 /**
  * 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);
     }
 }
예제 #4
0
 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;
         }
     }
 }
예제 #5
0
 /**
  * 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);
 }
예제 #6
0
 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);
     }
 }
예제 #7
0
 /**
  * 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;
     }
 }
예제 #8
0
 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");
     }
 }