* Modify adding whitelist logic.

This commit is contained in:
leiyong
2020-10-25 19:11:47 +08:00
parent c0f44f6465
commit 947c938b85
12 changed files with 121 additions and 44 deletions
+4 -34
View File
@@ -280,7 +280,7 @@ class programModel extends model
$programID = $this->dao->lastInsertId();
$this->dao->update(TABLE_PROGRAM)->set('`order`')->eq($programID * 5)->where('id')->eq($programID)->exec(); // Save order.
$this->updateUserACL($this->post->whitelist, 'program', $programID);
$this->loadModel('personnel')->updateWhitelist($this->post->whitelist, 'program', $programID);
if($program->acl != 'open') $this->loadModel('user')->updateUserView($programID, 'program');
$this->file->updateObjectID($this->post->uid, $programID, 'project');
@@ -373,7 +373,7 @@ class programModel extends model
if(!dao::isError())
{
$this->file->updateObjectID($this->post->uid, $programID, 'project');
$this->updateUserACL($this->post->whitelist, 'program', $programID);
$this->loadModel('personnel')->updateWhitelist($this->post->whitelist, 'program', $programID);
if($program->acl != 'open') $this->loadModel('user')->updateUserView($programID, 'program');
if($oldProgram->parent != $program->parent) $this->processNode($programID, $program->parent, $oldProgram->path, $oldProgram->grade);
@@ -1100,7 +1100,7 @@ class programModel extends model
if(!dao::isError())
{
$projectID = $this->dao->lastInsertId();
$this->updateUserACL($this->post->whitelist, 'project', $projectID);
$this->loadModel('personnel')->updateWhitelist($this->post->whitelist, 'project', $projectID);
if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project');
/* Save order. */
@@ -1191,7 +1191,7 @@ class programModel extends model
if(!dao::isError())
{
$this->file->updateObjectID($this->post->uid, $projectID, 'project');
$this->updateUserACL($this->post->whitelist, 'project', $projectID);
$this->loadModel('personnel')->updateWhitelist($this->post->whitelist, 'project', $projectID);
if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project');
if($oldProject->parent != $project->parent) $this->processNode($projectID, $project->parent, $oldProject->path, $oldProject->grade);
@@ -1373,34 +1373,4 @@ class programModel extends model
}
}
}
/**
* Adding users to access control lists.
*
* @param array $users
* @param string $objectType program|project|product|sprint
* @param int $objectID
* @param string $type whitelist|blacklist
* @param string $source upgrade|add
* @param string $desc
* @access public
* @return void
*/
public function updateUserACL($users = array(), $objectType = '', $objectID = 0, $type = 'whitelist', $source = 'add', $desc = '')
{
if(empty($users)) return false;
$this->dao->delete()->from(TABLE_ACL)->where('objectID')->eq($objectID)->exec();
foreach($users as $account)
{
if(empty($account)) continue;
$acl = new stdClass();
$acl->account = $account;
$acl->objectType = $objectType;
$acl->objectID = $objectID;
$acl->type = $type;
$acl->source = $source;
$acl->desc = $desc;
$this->dao->insert(TABLE_ACL)->data($acl)->autoCheck()->exec();
}
}
}