diff --git a/module/gitlab/control.php b/module/gitlab/control.php index ab1c2cfd06..bc81d7b53a 100644 --- a/module/gitlab/control.php +++ b/module/gitlab/control.php @@ -323,7 +323,10 @@ class gitlab extends control return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('userBrowse', "gitlabID=$gitlabID"))); } - $this->view->gitlabID = $gitlabID; + $userPairs = $this->loadModel('user')->getPairs('noclosed|noletter'); + + $this->view->userPairs = $userPairs; + $this->view->gitlabID = $gitlabID; $this->display(); } diff --git a/module/gitlab/lang/en.php b/module/gitlab/lang/en.php index de85829eca..c41f37ce6c 100644 --- a/module/gitlab/lang/en.php +++ b/module/gitlab/lang/en.php @@ -84,6 +84,7 @@ $lang->gitlab->user->projectsLimit = "Projects limit"; $lang->gitlab->user->canCreateGroup = "Can create group"; $lang->gitlab->user->external = "External"; $lang->gitlab->user->externalTip = "External users cannot see internal or private projects unless access is explicitly granted. Also, external users cannot create projects, groups, or personal snippets."; +$lang->gitlab->user->bind = "Bind Zentao user"; $lang->gitlab->user->skype = "Skype"; $lang->gitlab->user->linkedin = "Linkedin"; $lang->gitlab->user->twitter = "Twitter"; @@ -95,3 +96,4 @@ $lang->gitlab->user->create = "Create {$lang->gitlab->gitlabAccount}"; $lang->gitlab->user->edit = "Edit {$lang->gitlab->gitlabAccount}"; $lang->gitlab->user->emptyError = "cannot be empty"; $lang->gitlab->user->passwordError = "The second password is inconsistent!"; +$lang->gitlab->user->bindError = "The user has been bound!"; diff --git a/module/gitlab/lang/zh-cn.php b/module/gitlab/lang/zh-cn.php index 174284d509..e5d0f8d65f 100644 --- a/module/gitlab/lang/zh-cn.php +++ b/module/gitlab/lang/zh-cn.php @@ -84,6 +84,7 @@ $lang->gitlab->user->projectsLimit = "限制项目"; $lang->gitlab->user->canCreateGroup = "可创建组"; $lang->gitlab->user->external = "外部人员"; $lang->gitlab->user->externalTip = "除非明确授予访问权限,否则外部用户无法查看内部或私有项目。另外,外部用户无法创建项目,群组或个人代码片段。"; +$lang->gitlab->user->bind = "绑定禅道用户"; $lang->gitlab->user->skype = "Skype"; $lang->gitlab->user->linkedin = "Linkedin"; $lang->gitlab->user->twitter = "Twitter"; @@ -95,3 +96,4 @@ $lang->gitlab->user->create = "添加{$lang->gitlab->gitlabAccount}"; $lang->gitlab->user->edit = "编辑{$lang->gitlab->gitlabAccount}"; $lang->gitlab->user->emptyError = "不能为空"; $lang->gitlab->user->passwordError = "二次密码不一致!"; +$lang->gitlab->user->bindError = "该用户已经被绑定!"; diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 83bb8015ef..fcbd385ad3 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -1691,6 +1691,7 @@ class gitlabModel extends model public function createUser($gitlabID) { $user = fixer::input('post')->get(); + if(empty($user->name)) dao::$errors['name'][] = $this->lang->gitlab->user->name . $this->lang->gitlab->user->emptyError; if(empty($user->username)) dao::$errors['username'][] = $this->lang->gitlab->user->username . $this->lang->gitlab->user->emptyError; if(empty($user->email)) dao::$errors['email'][] = $this->lang->gitlab->user->email . $this->lang->gitlab->user->emptyError; @@ -1701,11 +1702,34 @@ class gitlabModel extends model dao::$errors[] = $this->lang->gitlab->user->passwordError; return false; } + /* Check whether the user has been bind. */ + if($user->bind) + { + $zentaoBindUser = $this->dao->select('account')->from(TABLE_OAUTH)->where('providerType')->eq('gitlab')->andWhere('providerID')->eq($gitlabID)->andWhere('account')->eq($user->bind)->fetch(); + if($zentaoBindUser) + { + dao::$errors['bind'][] = $this->lang->gitlab->user->bindError; + return false; + } + } $reponse = $this->apiCreateUser($gitlabID, $user); if(!$reponse) dao::$errors[] = false; - if(!empty($reponse->id)) return TRUE; + if(!empty($reponse->id)) + { + /* Bind user. */ + if($user->bind) + { + $userBind = new stdclass; + $userBind->providerID = $gitlabID; + $userBind->providerType = 'gitlab'; + $userBind->account = $user->bind; + $userBind->openID = $reponse->id; + $this->dao->insert(TABLE_OAUTH)->data($userBind)->exec(); + } + return TRUE; + } if(is_string($reponse->message)) dao::$errors[] = $reponse->message; else { diff --git a/module/gitlab/view/createuser.html.php b/module/gitlab/view/createuser.html.php index 9dd4503bbd..a3a268a072 100644 --- a/module/gitlab/view/createuser.html.php +++ b/module/gitlab/view/createuser.html.php @@ -64,6 +64,10 @@ +