summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Model/Base.php16
-rw-r--r--app/Model/User.php2
-rw-r--r--doc/gitlab-authentication.markdown5
-rw-r--r--tests/units/Model/UserTest.php11
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()