diff options
-rw-r--r-- | app/Model/Base.php | 16 | ||||
-rw-r--r-- | app/Model/User.php | 2 | ||||
-rw-r--r-- | doc/gitlab-authentication.markdown | 5 | ||||
-rw-r--r-- | tests/units/Model/UserTest.php | 11 |
4 files changed, 31 insertions, 3 deletions
diff --git a/app/Model/Base.php b/app/Model/Base.php index a15f071c..902ab269 100644 --- a/app/Model/Base.php +++ b/app/Model/Base.php @@ -97,6 +97,22 @@ abstract class Base extends \Core\Base } /** + * Force some fields to be null if empty + * + * @access public + * @param array $values Input array + * @param string[] $keys List of keys + */ + public function convertNullFields(array &$values, array $keys) + { + foreach ($keys as $key) { + if (array_key_exists($key, $values) && empty($values[$key])) { + $values[$key] = null; + } + } + } + + /** * Build SQL condition for a given time range * * @access protected diff --git a/app/Model/User.php b/app/Model/User.php index 5792a549..fd2ec954 100644 --- a/app/Model/User.php +++ b/app/Model/User.php @@ -279,7 +279,7 @@ class User extends Base $this->removeFields($values, array('confirmation', 'current_password')); $this->resetFields($values, array('is_admin', 'is_ldap_user', 'is_project_admin', 'disable_login_form')); - $this->removeEmptyFields($values, array('gitlab_id')); + $this->convertNullFields($values, array('gitlab_id')); $this->convertIntegerFields($values, array('gitlab_id')); } diff --git a/doc/gitlab-authentication.markdown b/doc/gitlab-authentication.markdown index 3cf6d283..8d2f0000 100644 --- a/doc/gitlab-authentication.markdown +++ b/doc/gitlab-authentication.markdown @@ -76,3 +76,8 @@ Kanboard uses these information from your Gitlab profile: - Gitlab unique id The Gitlab unique id is used to link the local user account and the Gitlab account. + +Known issues +------------ + +Gitlab OAuth will work only with url rewrite enabled. At the moment, Gitlab doesn't support callback url with query string parameters. See [Gitlab issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/2443) diff --git a/tests/units/Model/UserTest.php b/tests/units/Model/UserTest.php index ac16a300..85631cd6 100644 --- a/tests/units/Model/UserTest.php +++ b/tests/units/Model/UserTest.php @@ -250,7 +250,7 @@ class UserTest extends Base ); $u->prepare($input); - $this->assertEquals(array(), $input); + $this->assertEquals(array('gitlab_id' => null), $input); $input = array( 'gitlab_id' => 'something', @@ -325,8 +325,11 @@ class UserTest extends Base public function testUpdate() { $u = new User($this->container); - $this->assertNotFalse($u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); + $this->assertEquals(2, $u->create(array('username' => 'toto', 'password' => '123456', 'name' => 'Toto'))); + $this->assertEquals(3, $u->create(array('username' => 'plop', 'gitlab_id' => '123'))); + $this->assertTrue($u->update(array('id' => 2, 'username' => 'biloute'))); + $this->assertTrue($u->update(array('id' => 3, 'gitlab_id' => ''))); $user = $u->getById(2); $this->assertNotFalse($user); @@ -335,6 +338,10 @@ class UserTest extends Base $this->assertEquals('Toto', $user['name']); $this->assertEquals(0, $user['is_admin']); $this->assertEquals(0, $user['is_ldap_user']); + + $user = $u->getById(3); + $this->assertNotEmpty($user); + $this->assertEquals(null, $user['gitlab_id']); } public function testRemove() |