* Finish task #48098.

This commit is contained in:
liyuchun
2022-01-24 13:37:46 +08:00
parent 58a692337a
commit a567a2e6ea
3 changed files with 14 additions and 7 deletions
+6 -2
View File
@@ -624,13 +624,17 @@ class gitlab extends control
$result = $this->gitlab->apiGetProjectsPager($gitlabID, $keyword, $orderBy, $pager);
/* Get group id list by gitlab user that the user is maintainer. */
$groupIDList = array(0 => 0);
$groups = $this->gitlab->apiGetGroups($gitlabID, 'name_asc', $this->config->gitlab->accessLevel['maintainer']);
foreach($groups as $group) $groupIDList[] = $group->id;
foreach($result['projects'] as $key => $project)
{
$project->adminer = (bool)$this->app->user->admin;
if(!$project->adminer and isset($project->owner) and $project->owner->id == $openID) $project->adminer = true;
$project->userAccess = 0;
if(isset($project->permissions) and $project->permissions->project_access) $project->userAccess = (int)$project->permissions->project_access->access_level;
$project->isMaintainer = $this->gitlab->checkUserAccess($gitlabID, $openID, $project->id, $project, $groupIDList, 'maintainer');
}
$gitlab = $this->gitlab->getByID($gitlabID);
+2
View File
@@ -2756,6 +2756,8 @@ class gitlabModel extends model
*/
public function checkUserAccess($gitlabID, $openID = 0, $projectID = 0, $project = null, $groupIDList = array(), $maxRole = 'maintainer')
{
if($this->app->user->admin) return true;
if($project == null) $project = $this->apiGetSingleProject($gitlabID, $projectID);
if(!$openID or !isset($project->id)) return false;
+6 -5
View File
@@ -67,13 +67,14 @@
<td class='text' title='<?php echo substr($gitlabProject->last_activity_at, 0, 10);?>'><?php echo substr($gitlabProject->last_activity_at, 0, 10);?></td>
<td class='c-actions text-left'>
<?php
$adminClass = ($gitlabProject->adminer or $gitlabProject->userAccess == 40) ? '' : 'disabled';
$canManage = $gitlabProject->isMaintainer ? '' : 'disabled';
$canDelete = $gitlabProject->adminer ? '' : 'disabled';
common::printLink('gitlab', 'browseBranch', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-treemap'></i> ", '', "title='{$lang->gitlab->browseBranch}' class='btn btn-primary'");
common::printLink('gitlab', 'browseBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-branch-lock'></i> ", '', "title='{$lang->gitlab->branch->accessLevel}' class='btn btn-primary {$adminClass}'");
common::printLink('gitlab', 'browseBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-branch-lock'></i> ", '', "title='{$lang->gitlab->branch->accessLevel}' class='btn btn-primary {$canManage}'");
common::printLink('gitlab', 'browseTag', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-tag'></i> ", '', "title='{$lang->gitlab->browseTag}' class='btn btn-primary'");
common::printLink('gitlab', 'browseTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-tag-lock'></i> ", '', "title='{$lang->gitlab->browseTagPriv}' class='btn btn-primary {$adminClass}'");
common::printLink('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-edit'></i> ", '', "title='{$lang->gitlab->project->edit}' class='btn btn-primary {$adminClass}'");
if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id"), '<i class="icon-trash"></i>', 'hiddenwin', "title='{$lang->gitlab->deleteProject}' class='btn {$adminClass}'");
common::printLink('gitlab', 'browseTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-tag-lock'></i> ", '', "title='{$lang->gitlab->browseTagPriv}' class='btn btn-primary {$canManage}'");
common::printLink('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", "<i class='icon icon-edit'></i> ", '', "title='{$lang->gitlab->project->edit}' class='btn btn-primary {$canManage}'");
if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id"), '<i class="icon-trash"></i>', 'hiddenwin', "title='{$lang->gitlab->deleteProject}' class='btn {$canDelete}'");
?>
</td>
</tr>