* Finish task #44802.

This commit is contained in:
liyuchun
2021-11-25 13:49:04 +08:00
parent 762754479a
commit ef9ad2c0d7
3 changed files with 21 additions and 14 deletions

View File

@@ -451,10 +451,11 @@ class gitlabModel extends model
* Get gitlab user list.
*
* @param int $gitlabID
* @param bool $onlyLinked
* @access public
* @return array
*/
public function apiGetUsers($gitlabID)
public function apiGetUsers($gitlabID, $onlyLinked = false)
{
/* GitLab API '/users' can only return 20 users per page in default, so we use a loop to fetch all users. */
$page = 1;
@@ -478,17 +479,23 @@ class gitlabModel extends model
if(!$response) return array();
/* Get linked users. */
$linkedUsers = array();
if($onlyLinked) $linkedUsers = $this->getUserIdAccountPairs($gitlabID);
$users = array();
foreach($response as $gitlabUser)
{
$user = new stdclass;
$user->id = $gitlabUser->id;
$user->realname = $gitlabUser->name;
$user->account = $gitlabUser->username;
$user->email = $gitlabUser->email;
$user->avatar = $gitlabUser->avatar_url;
$user->createdAt = $gitlabUser->created_at;
$user->lastActivityOn = $gitlabUser->last_activity_on;
if(!isset($linkedUsers[$gitlabUser->id])) continue;
$user = new stdclass;
$user->id = $gitlabUser->id;
$user->realname = $gitlabUser->name;
$user->account = $gitlabUser->username;
$user->email = $gitlabUser->email;
$user->avatar = $gitlabUser->avatar_url;
$user->createdAt = $gitlabUser->created_at;
$user->lastActivityOn = $gitlabUser->last_activity_on;
$users[] = $user;
}
@@ -2121,7 +2128,7 @@ class gitlabModel extends model
/* Check whether the user has been bind. */
if($user->account)
{
$zentaoBindUser = $this->dao->select('account')->from(TABLE_OAUTH)->where('providerType')->eq('gitlab')->andWhere('providerID')->eq($gitlabID)->andWhere('account')->eq($user->account)->fetch();
$zentaoBindUser = $this->dao->select('account,openID')->from(TABLE_OAUTH)->where('providerType')->eq('gitlab')->andWhere('providerID')->eq($gitlabID)->andWhere('account')->eq($user->account)->fetch();
$changeBind = (!$zentaoBindUser or $zentaoBindUser->openID != $user->id) ? true : false;
if($zentaoBindUser && $changeBind)
{