示例#1
0
 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;
     }
 }
示例#2
0
 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));
 }
示例#3
0
 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;
     }
 }
示例#4
0
 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');
                 }
             }
         }
     }
 }