diff options
| author | Frédéric Guillot <fred@kanboard.net> | 2017-11-30 12:02:48 -0800 | 
|---|---|---|
| committer | Frédéric Guillot <fred@kanboard.net> | 2017-11-30 12:02:48 -0800 | 
| commit | cb9e6377f6dd1d16d6c5d1aa98014941eef48814 (patch) | |
| tree | b0abb935cc996f869565fcf43613023052f63933 | |
| parent | aa5199db7f0915e0115ac302fa4d3e0552b0a4b0 (diff) | |
Disable private projects when disabling a user
| -rw-r--r-- | app/Model/UserModel.php | 6 | ||||
| -rw-r--r-- | tests/units/Model/UserModelTest.php | 13 | 
2 files changed, 18 insertions, 1 deletions
diff --git a/app/Model/UserModel.php b/app/Model/UserModel.php index af49ce7d..c44fd3e7 100644 --- a/app/Model/UserModel.php +++ b/app/Model/UserModel.php @@ -286,7 +286,11 @@ class UserModel extends Base       */      public function disable($user_id)      { -        return $this->db->table(self::TABLE)->eq('id', $user_id)->update(array('is_active' => 0)); +        $this->db->startTransaction(); +        $result1 = $this->db->table(self::TABLE)->eq('id', $user_id)->update(array('is_active' => 0)); +        $result2 = $this->db->table(ProjectModel::TABLE)->eq('is_private', 1)->eq('owner_id', $user_id)->update(array('is_active' => 0)); +        $this->db->closeTransaction(); +        return $result1 && $result2;      }      /** diff --git a/tests/units/Model/UserModelTest.php b/tests/units/Model/UserModelTest.php index a0c9c575..e7f6e0e5 100644 --- a/tests/units/Model/UserModelTest.php +++ b/tests/units/Model/UserModelTest.php @@ -381,4 +381,17 @@ class UserModelTest extends Base          $this->assertEquals(1, $user['is_active']);          $this->assertTrue($userModel->isActive(2));      } + +    public function testDisablePrivateProjects() +    { +        $userModel = new UserModel($this->container); +        $projectModel = new ProjectModel($this->container); + +        $this->assertEquals(2, $userModel->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); +        $this->assertEquals(1, $projectModel->create(array('name' => 'Project #1', 'is_private' => 1, 'owner_id' => 2))); +        $this->assertTrue($userModel->disable(2)); + +        $project = $projectModel->getById(2); +        $this->assertEquals(0, $project['is_active']); +    }  }  | 
