function permission_user_allowed_to_change($params) { if (!$params['allowed']) { if (!$this->_cached_permission_user_allowed_to_change) { if (in_array($params['permission_type'], array('PLUGIN_GIT_READ', 'PLUGIN_GIT_WRITE', 'PLUGIN_GIT_WPLUS'))) { require_once 'GitRepository.class.php'; $repository = new GitRepository(); $repository->setId($params['object_id']); try { $repository->load(); //Only project admin can update perms of project repositories //Only repo owner can update perms of personal repositories $user = UserManager::instance()->getCurrentUser(); $this->_cached_permission_user_allowed_to_change = $repository->belongsTo($user) || $user->isMember($repository->getProjectId(), 'A'); } catch (Exception $e) { // do nothing } } } $params['allowed'] = $this->_cached_permission_user_allowed_to_change; } }
public function testUserRepositoryDoesNotBelongToAnotherUser() { $creator = new PFUser(array('language_id' => 1)); $creator->setId(123); $user = new PFUser(array('language_id' => 1)); $user->setId(456); $repo = new GitRepository(); $repo->setCreator($creator); $repo->setScope(GitRepository::REPO_SCOPE_INDIVIDUAL); $this->assertFalse($repo->belongsTo($user)); }
function permission_user_allowed_to_change($params) { if (!$params['allowed']) { $user = $this->getCurrentUser(); $project = $this->getProjectManager()->getProject($params['group_id']); if ($this->getGitPermissionsManager()->userIsGitAdmin($user, $project)) { $this->_cached_permission_user_allowed_to_change = true; } if (!$this->_cached_permission_user_allowed_to_change) { if (in_array($params['permission_type'], array('PLUGIN_GIT_READ', 'PLUGIN_GIT_WRITE', 'PLUGIN_GIT_WPLUS'))) { $repository = new GitRepository(); $repository->setId($params['object_id']); try { $repository->load(); //Only project admin can update perms of project repositories //Only repo owner can update perms of personal repositories $this->_cached_permission_user_allowed_to_change = $repository->belongsTo($user) || $this->getPermissionsManager()->userIsGitAdmin($user, $project); } catch (Exception $e) { // do nothing } } } $params['allowed'] = $this->_cached_permission_user_allowed_to_change; } }
protected function definePermittedActions($repoId, $user) { if ($this->user->isMember($this->groupId, 'A') === true) { $this->permittedActions = array('index', 'view', 'edit', 'clone', 'add', 'del', 'create', 'confirm_deletion', 'save', 'repo_management', 'mail_prefix', 'add_mail', 'remove_mail', 'fork', 'set_private', 'confirm_private', 'fork_repositories', 'do_fork_repositories', 'view_last_git_pushes'); } else { $this->addPermittedAction('index'); $this->addPermittedAction('view_last_git_pushes'); if ($this->user->isMember($this->groupId)) { $this->addPermittedAction('fork_repositories'); $this->addPermittedAction('do_fork_repositories'); } if ($repoId !== 0) { $repo = new GitRepository(); $repo->setId($repoId); if ($repo->exists() && $repo->userCanRead($user)) { $this->addPermittedAction('view'); $this->addPermittedAction('edit'); $this->addPermittedAction('clone'); if ($repo->belongsTo($user)) { $this->addPermittedAction('repo_management'); $this->addPermittedAction('mail_prefix'); $this->addPermittedAction('add_mail'); $this->addPermittedAction('remove_mail'); $this->addPermittedAction('del'); $this->addPermittedAction('confirm_deletion'); $this->addPermittedAction('save'); } } } } }