summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/hookmanager.php9
-rw-r--r--apps/provisioning_api/lib/users.php2
-rw-r--r--apps/provisioning_api/tests/userstest.php6
-rw-r--r--apps/user_ldap/ajax/wizard.php3
-rw-r--r--apps/user_ldap/appinfo/app.php3
-rw-r--r--apps/user_ldap/lib/jobs.php3
-rw-r--r--apps/user_ldap/lib/proxy.php4
-rw-r--r--apps/user_ldap/lib/user/manager.php29
-rw-r--r--apps/user_ldap/lib/user/user.php26
-rw-r--r--apps/user_ldap/tests/access.php3
-rw-r--r--apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php3
-rw-r--r--apps/user_ldap/tests/user/manager.php35
-rw-r--r--apps/user_ldap/tests/user/user.php120
-rw-r--r--apps/user_ldap/tests/user_ldap.php3
-rw-r--r--lib/private/server.php4
-rw-r--r--lib/private/user/manager.php1
-rw-r--r--lib/private/user/user.php26
-rw-r--r--lib/public/iuser.php9
-rw-r--r--settings/controller/userscontroller.php8
-rw-r--r--tests/lib/contacts/localadressbook.php6
-rw-r--r--tests/lib/user/user.php3
-rw-r--r--tests/settings/controller/userscontrollertest.php39
22 files changed, 207 insertions, 138 deletions
diff --git a/apps/dav/lib/hookmanager.php b/apps/dav/lib/hookmanager.php
index 7902bf31459..d2199bec598 100644
--- a/apps/dav/lib/hookmanager.php
+++ b/apps/dav/lib/hookmanager.php
@@ -54,6 +54,10 @@ class HookManager {
'post_deleteUser',
$this,
'postDeleteUser');
+ Util::connectHook('OC_User',
+ 'changeUser',
+ $this,
+ 'changeUser');
}
public function postCreateUser($params) {
@@ -64,6 +68,7 @@ class HookManager {
public function preDeleteUser($params) {
$this->usersToDelete[$params['uid']] = $this->userManager->get($params['uid']);
}
+
public function postDeleteUser($params) {
$uid = $params['uid'];
if (isset($this->usersToDelete[$uid])){
@@ -71,4 +76,8 @@ class HookManager {
}
}
+ public function changeUser($params) {
+ $user = $params['user'];
+ $this->syncService->updateUser($user);
+ }
}
diff --git a/apps/provisioning_api/lib/users.php b/apps/provisioning_api/lib/users.php
index a385f2c1180..efb10a50865 100644
--- a/apps/provisioning_api/lib/users.php
+++ b/apps/provisioning_api/lib/users.php
@@ -285,7 +285,7 @@ class Users {
break;
case 'email':
if(filter_var($parameters['_put']['value'], FILTER_VALIDATE_EMAIL)) {
- $this->config->setUserValue($targetUserId, 'settings', 'email', $parameters['_put']['value']);
+ $targetUser->setEMailAddress($parameters['_put']['value']);
} else {
return new OC_OCS_Result(null, 102);
}
diff --git a/apps/provisioning_api/tests/userstest.php b/apps/provisioning_api/tests/userstest.php
index 25e723a13b4..3ce13181b8d 100644
--- a/apps/provisioning_api/tests/userstest.php
+++ b/apps/provisioning_api/tests/userstest.php
@@ -932,10 +932,10 @@ class UsersTest extends OriginalTest {
->method('get')
->with('UserToEdit')
->will($this->returnValue($targetUser));
- $this->config
+ $targetUser
->expects($this->once())
- ->method('setUserValue')
- ->with('UserToEdit', 'settings', 'email', 'demo@owncloud.org');
+ ->method('setEMailAddress')
+ ->with('demo@owncloud.org');
$expected = new \OC_OCS_Result(null, 100);
$this->assertEquals($expected, $this->api->editUser(['userid' => 'UserToEdit', '_put' => ['key' => 'email', 'value' => 'demo@owncloud.org']]));
diff --git a/apps/user_ldap/ajax/wizard.php b/apps/user_ldap/ajax/wizard.php
index 21396068267..666af85e56e 100644
--- a/apps/user_ldap/ajax/wizard.php
+++ b/apps/user_ldap/ajax/wizard.php
@@ -54,7 +54,8 @@ $userManager = new \OCA\user_ldap\lib\user\Manager(
new \OCA\user_ldap\lib\LogWrapper(),
\OC::$server->getAvatarManager(),
new \OCP\Image(),
- \OC::$server->getDatabaseConnection());
+ \OC::$server->getDatabaseConnection(),
+ \OC::$server->getUserManager());
$access = new \OCA\user_ldap\lib\Access($con, $ldapWrapper, $userManager);
diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php
index 763fdc99c6b..dab47ee6e6f 100644
--- a/apps/user_ldap/appinfo/app.php
+++ b/apps/user_ldap/appinfo/app.php
@@ -37,7 +37,8 @@ if(count($configPrefixes) === 1) {
new OCA\user_ldap\lib\LogWrapper(),
\OC::$server->getAvatarManager(),
new \OCP\Image(),
- $dbc
+ $dbc,
+ \OC::$server->getUserManager()
);
$connector = new OCA\user_ldap\lib\Connection($ldapWrapper, $configPrefixes[0]);
$ldapAccess = new OCA\user_ldap\lib\Access($connector, $ldapWrapper, $userManager);
diff --git a/apps/user_ldap/lib/jobs.php b/apps/user_ldap/lib/jobs.php
index b27f66055a3..47e28470188 100644
--- a/apps/user_ldap/lib/jobs.php
+++ b/apps/user_ldap/lib/jobs.php
@@ -175,7 +175,8 @@ class Jobs extends \OC\BackgroundJob\TimedJob {
new LogWrapper(),
\OC::$server->getAvatarManager(),
new \OCP\Image(),
- $dbc);
+ $dbc,
+ \OC::$server->getUserManager());
$connector = new Connection($ldapWrapper, $configPrefixes[0]);
$ldapAccess = new Access($connector, $ldapWrapper, $userManager);
$groupMapper = new GroupMapping($dbc);
diff --git a/apps/user_ldap/lib/proxy.php b/apps/user_ldap/lib/proxy.php
index 28233748790..082ba9a93d0 100644
--- a/apps/user_ldap/lib/proxy.php
+++ b/apps/user_ldap/lib/proxy.php
@@ -61,6 +61,7 @@ abstract class Proxy {
static $userMap;
static $groupMap;
static $db;
+ static $userManager;
if(is_null($fs)) {
$ocConfig = \OC::$server->getConfig();
$fs = new FilesystemHelper();
@@ -69,9 +70,10 @@ abstract class Proxy {
$db = \OC::$server->getDatabaseConnection();
$userMap = new UserMapping($db);
$groupMap = new GroupMapping($db);
+ $userManager = \OC::$server->getUserManager();
}
$userManager =
- new user\Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(), $db);
+ new user\Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(), $db, $userManager);
$connector = new Connection($this->ldap, $configPrefix);
$access = new Access($connector, $this->ldap, $userManager);
$access->setUserMapper($userMap);
diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php
index dcaf40b80c4..cfa333b06d4 100644
--- a/apps/user_ldap/lib/user/manager.php
+++ b/apps/user_ldap/lib/user/manager.php
@@ -29,6 +29,11 @@ use OCA\user_ldap\lib\user\User;
use OCA\user_ldap\lib\LogWrapper;
use OCA\user_ldap\lib\FilesystemHelper;
use OCA\user_ldap\lib\user\OfflineUser;
+use OCP\IAvatarManager;
+use OCP\IConfig;
+use OCP\IDBConnection;
+use OCP\Image;
+use OCP\IUserManager;
/**
* Manager
@@ -40,10 +45,10 @@ class Manager {
/** @var IUserTools */
protected $access;
- /** @var \OCP\IConfig */
+ /** @var IConfig */
protected $ocConfig;
- /** @var \OCP\IDBConnection */
+ /** @var IDBConnection */
protected $db;
/** @var FilesystemHelper */
@@ -52,7 +57,7 @@ class Manager {
/** @var LogWrapper */
protected $ocLog;
- /** @var \OCP\Image */
+ /** @var Image */
protected $image;
/** @param \OCP\IAvatarManager */
@@ -69,18 +74,19 @@ class Manager {
);
/**
- * @param \OCP\IConfig $ocConfig
+ * @param IConfig $ocConfig
* @param \OCA\user_ldap\lib\FilesystemHelper $ocFilesystem object that
* gives access to necessary functions from the OC filesystem
* @param \OCA\user_ldap\lib\LogWrapper $ocLog
- * @param \OCP\IAvatarManager $avatarManager
- * @param \OCP\Image $image an empty image instance
- * @param \OCP\IDBConnection $db
+ * @param IAvatarManager $avatarManager
+ * @param Image $image an empty image instance
+ * @param IDBConnection $db
* @throws \Exception when the methods mentioned above do not exist
*/
- public function __construct(\OCP\IConfig $ocConfig,
- FilesystemHelper $ocFilesystem, LogWrapper $ocLog,
- \OCP\IAvatarManager $avatarManager, \OCP\Image $image, \OCP\IDBConnection $db) {
+ public function __construct(IConfig $ocConfig,
+ FilesystemHelper $ocFilesystem, LogWrapper $ocLog,
+ IAvatarManager $avatarManager, Image $image,
+ IDBConnection $db, IUserManager $userManager) {
$this->ocConfig = $ocConfig;
$this->ocFilesystem = $ocFilesystem;
@@ -88,6 +94,7 @@ class Manager {
$this->avatarManager = $avatarManager;
$this->image = $image;
$this->db = $db;
+ $this->userManager = $userManager;
}
/**
@@ -110,7 +117,7 @@ class Manager {
$this->checkAccess();
$user = new User($uid, $dn, $this->access, $this->ocConfig,
$this->ocFilesystem, clone $this->image, $this->ocLog,
- $this->avatarManager);
+ $this->avatarManager, $this->userManager);
$this->users['byDN'][$dn] = $user;
$this->users['byUid'][$uid] = $user;
return $user;
diff --git a/apps/user_ldap/lib/user/user.php b/apps/user_ldap/lib/user/user.php
index 23fd831b62f..13f88aa6507 100644
--- a/apps/user_ldap/lib/user/user.php
+++ b/apps/user_ldap/lib/user/user.php
@@ -27,6 +27,9 @@ use OCA\user_ldap\lib\user\IUserTools;
use OCA\user_ldap\lib\Connection;
use OCA\user_ldap\lib\FilesystemHelper;
use OCA\user_ldap\lib\LogWrapper;
+use OCP\IAvatarManager;
+use OCP\IConfig;
+use OCP\IUserManager;
/**
* User
@@ -43,7 +46,7 @@ class User {
*/
protected $connection;
/**
- * @var \OCP\IConfig
+ * @var IConfig
*/
protected $config;
/**
@@ -59,10 +62,13 @@ class User {
*/
protected $log;
/**
- * @var \OCP\IAvatarManager
+ * @var IAvatarManager
*/
protected $avatarManager;
-
+ /**
+ * @var IUserManager
+ */
+ protected $userManager;
/**
* @var string
*/
@@ -92,15 +98,16 @@ class User {
* @param string $dn the LDAP DN
* @param IUserTools $access an instance that implements IUserTools for
* LDAP interaction
- * @param \OCP\IConfig $config
+ * @param IConfig $config
* @param FilesystemHelper $fs
* @param \OCP\Image $image any empty instance
* @param LogWrapper $log
- * @param \OCP\IAvatarManager $avatarManager
+ * @param IAvatarManager $avatarManager
+ * @param IUserManager $userManager
*/
public function __construct($username, $dn, IUserTools $access,
- \OCP\IConfig $config, FilesystemHelper $fs, \OCP\Image $image,
- LogWrapper $log, \OCP\IAvatarManager $avatarManager) {
+ IConfig $config, FilesystemHelper $fs, \OCP\Image $image,
+ LogWrapper $log, IAvatarManager $avatarManager, IUserManager $userManager) {
$this->access = $access;
$this->connection = $access->getConnection();
@@ -111,6 +118,7 @@ class User {
$this->image = $image;
$this->log = $log;
$this->avatarManager = $avatarManager;
+ $this->userManager = $userManager;
}
/**
@@ -400,8 +408,8 @@ class User {
}
}
if(!is_null($email)) {
- $this->config->setUserValue(
- $this->uid, 'settings', 'email', $email);
+ $user = $this->userManager->get($this->uid);
+ $user->setEMailAddress($email);
}
}
diff --git a/apps/user_ldap/tests/access.php b/apps/user_ldap/tests/access.php
index d9a3919dfcd..6d35adf1694 100644
--- a/apps/user_ldap/tests/access.php
+++ b/apps/user_ldap/tests/access.php
@@ -58,7 +58,8 @@ class Test_Access extends \Test\TestCase {
$this->getMock('\OCA\user_ldap\lib\LogWrapper'),
$this->getMock('\OCP\IAvatarManager'),
$this->getMock('\OCP\Image'),
- $this->getMock('\OCP\IDBConnection')));
+ $this->getMock('\OCP\IDBConnection'),
+ $this->getMock('\OCP\IUserManager')));
return array($lw, $connector, $um);
}
diff --git a/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php b/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php
index 9fb0ffc1b7d..4db3ca48768 100644
--- a/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php
+++ b/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php
@@ -123,7 +123,8 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest {
new \OCA\user_ldap\lib\LogWrapper(),
\OC::$server->getAvatarManager(),
new \OCP\Image(),
- \OC::$server->getDatabaseConnection()
+ \OC::$server->getDatabaseConnection(),
+ \OC::$server->getUserManager()
);
}
diff --git a/apps/user_ldap/tests/user/manager.php b/apps/user_ldap/tests/user/manager.php
index 2ad438fcba4..c4af1009df8 100644
--- a/apps/user_ldap/tests/user/manager.php
+++ b/apps/user_ldap/tests/user/manager.php
@@ -44,6 +44,7 @@ class Test_User_Manager extends \Test\TestCase {
$avaMgr = $this->getMock('\OCP\IAvatarManager');
$image = $this->getMock('\OCP\Image');
$dbc = $this->getMock('\OCP\IDBConnection');
+ $userMgr = $this->getMock('\OCP\IUserManager');
$connection = new \OCA\user_ldap\lib\Connection(
$lw = $this->getMock('\OCA\user_ldap\lib\ILDAPWrapper'),
@@ -55,11 +56,11 @@ class Test_User_Manager extends \Test\TestCase {
->method('getConnection')
->will($this->returnValue($connection));
- return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc);
+ return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr);
}
public function testGetByDNExisting() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
$inputDN = 'cn=foo,dc=foobar,dc=bar';
@@ -78,7 +79,7 @@ class Test_User_Manager extends \Test\TestCase {
$access->expects($this->never())
->method('username2dn');
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$user = $manager->get($inputDN);
@@ -90,7 +91,7 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetByEDirectoryDN() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
$inputDN = 'uid=foo,o=foobar,c=bar';
@@ -109,7 +110,7 @@ class Test_User_Manager extends \Test\TestCase {
$access->expects($this->never())
->method('username2dn');
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$user = $manager->get($inputDN);
@@ -117,7 +118,7 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetByExoticDN() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
$inputDN = 'ab=cde,f=ghei,mno=pq';
@@ -136,7 +137,7 @@ class Test_User_Manager extends \Test\TestCase {
$access->expects($this->never())
->method('username2dn');
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$user = $manager->get($inputDN);
@@ -144,7 +145,7 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetByDNNotExisting() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
$inputDN = 'cn=gone,dc=foobar,dc=bar';
@@ -164,7 +165,7 @@ class Test_User_Manager extends \Test\TestCase {
->with($this->equalTo($inputDN))
->will($this->returnValue(false));
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$user = $manager->get($inputDN);
@@ -172,7 +173,7 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetByUidExisting() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
$dn = 'cn=foo,dc=foobar,dc=bar';
@@ -191,7 +192,7 @@ class Test_User_Manager extends \Test\TestCase {
->with($this->equalTo($uid))
->will($this->returnValue(false));
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$user = $manager->get($uid);
@@ -203,7 +204,7 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetByUidNotExisting() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
$dn = 'cn=foo,dc=foobar,dc=bar';
@@ -217,7 +218,7 @@ class Test_User_Manager extends \Test\TestCase {
->with($this->equalTo($uid))
->will($this->returnValue(false));
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$user = $manager->get($uid);
@@ -225,10 +226,10 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetAttributesAll() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$connection = $access->getConnection();
@@ -243,10 +244,10 @@ class Test_User_Manager extends \Test\TestCase {
}
public function testGetAttributesMinimal() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
- $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc);
+ $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr);
$manager->setLdapAccess($access);
$attributes = $manager->getAttributes(true);
diff --git a/apps/user_ldap/tests/user/user.php b/apps/user_ldap/tests/user/user.php
index 9b3bb4ace66..6fa7f3b6b27 100644
--- a/apps/user_ldap/tests/user/user.php
+++ b/apps/user_ldap/tests/user/user.php
@@ -25,6 +25,7 @@
namespace OCA\user_ldap\tests;
use OCA\user_ldap\lib\user\User;
+use OCP\IUserManager;
/**
* Class Test_User_User
@@ -43,11 +44,12 @@ class Test_User_User extends \Test\TestCase {
$avaMgr = $this->getMock('\OCP\IAvatarManager');
$image = $this->getMock('\OCP\Image');
$dbc = $this->getMock('\OCP\IDBConnection');
+ $userMgr = $this->getMock('\OCP\IUserManager');
- return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc);
+ return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr);
}
- private function getAdvancedMocks($cfMock, $fsMock, $logMock, $avaMgr, $dbc) {
+ private function getAdvancedMocks($cfMock, $fsMock, $logMock, $avaMgr, $dbc, $userMgr = null) {
static $conMethods;
static $accMethods;
static $umMethods;
@@ -61,8 +63,11 @@ class Test_User_User extends \Test\TestCase {
}
$lw = $this->getMock('\OCA\user_ldap\lib\ILDAPWrapper');
$im = $this->getMock('\OCP\Image');
+ if (is_null($userMgr)) {
+ $userMgr = $this->getMock('\OCP\IUserManager');
+ }
$um = $this->getMock('\OCA\user_ldap\lib\user\Manager',
- $umMethods, array($cfMock, $fsMock, $logMock, $avaMgr, $im, $dbc));
+ $umMethods, array($cfMock, $fsMock, $logMock, $avaMgr, $im, $dbc, $userMgr));
$connector = $this->getMock('\OCA\user_ldap\lib\Connection',
$conMethods, array($lw, null, null));
$access = $this->getMock('\OCA\user_ldap\lib\Access',
@@ -72,25 +77,25 @@ class Test_User_User extends \Test\TestCase {
}
public function testGetDNandUsername() {
- list($access, $config, $filesys, $image, $log, $avaMgr) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr) =
$this->getTestInstances();
$uid = 'alice';
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$this->assertSame($dn, $user->getDN());
$this->assertSame($uid, $user->getUsername());
}
public function testUpdateEmailProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
+ $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc, $userMgr);
$connection->expects($this->once())
->method('__get')
@@ -103,24 +108,27 @@ class Test_User_User extends \Test\TestCase {
$this->equalTo('email'))
->will($this->returnValue(array('alice@foo.bar')));
- $config->expects($this->once())
- ->method('setUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('settings'),
- $this->equalTo('email'),
- $this->equalTo('alice@foo.bar'))
- ->will($this->returnValue(true));
-
$uid = 'alice';
$dn = 'uid=alice,dc=foo,dc=bar';
+ $uuser = $this->getMockBuilder('\OCP\IUser')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $uuser->expects($this->once())
+ ->method('setEMailAddress')
+ ->with('alice@foo.bar');
+ /** @var IUserManager | \PHPUnit_Framework_MockObject_MockObject $userMgr */
+ $userMgr->expects($this->any())
+ ->method('get')
+ ->willReturn($uuser);
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateEmail();
}
public function testUpdateEmailNotProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -144,13 +152,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateEmail();
}
public function testUpdateEmailNotConfigured() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -171,13 +179,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateEmail();
}
public function testUpdateQuotaAllProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -214,13 +222,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateQuota();
}
public function testUpdateQuotaDefaultProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -257,13 +265,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateQuota();
}
public function testUpdateQuotaIndividualProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -300,13 +308,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateQuota();
}
public function testUpdateQuotaNoneProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -338,13 +346,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateQuota();
}
public function testUpdateQuotaNoneConfigured() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -373,13 +381,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateQuota();
}
public function testUpdateQuotaFromValue() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -412,14 +420,14 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateQuota($readQuota);
}
//the testUpdateAvatar series also implicitely tests getAvatarImage
public function testUpdateAvatarJpegPhotoProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -462,13 +470,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateAvatar();
}
public function testUpdateAvatarThumbnailPhotoProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -520,13 +528,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateAvatar();
}
public function testUpdateAvatarNotProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -566,13 +574,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->updateAvatar();
}
public function testUpdateBeforeFirstLogin() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -602,13 +610,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->update();
}
public function testUpdateAfterFirstLogin() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -642,13 +650,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->update();
}
public function testUpdateNoRefresh() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -678,13 +686,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->update();
}
public function testMarkLogin() {
- list($access, $config, $filesys, $image, $log, $avaMgr) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr) =
$this->getTestInstances();
$config->expects($this->once())
@@ -699,13 +707,13 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->markLogin();
}
public function testGetAvatarImageProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr) =
$this->getTestInstances();
$access->expects($this->once())
@@ -718,7 +726,7 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$photo = $user->getAvatarImage();
$this->assertSame('this is a photo', $photo);
@@ -728,7 +736,7 @@ class Test_User_User extends \Test\TestCase {
}
public function testProcessAttributes() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -748,7 +756,7 @@ class Test_User_User extends \Test\TestCase {
);
$userMock = $this->getMockBuilder('OCA\user_ldap\lib\user\User')
- ->setConstructorArgs(array($uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr))
+ ->setConstructorArgs(array($uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr))
->setMethods($requiredMethods)
->getMock();
@@ -795,7 +803,7 @@ class Test_User_User extends \Test\TestCase {
* @dataProvider emptyHomeFolderAttributeValueProvider
*/
public function testGetHomePathNotConfigured($attributeValue) {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -816,14 +824,14 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$path = $user->getHomePath();
$this->assertSame($path, false);
}
public function testGetHomePathConfiguredNotAvailableAllowed() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
@@ -847,7 +855,7 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$path = $user->getHomePath();
@@ -858,11 +866,11 @@ class Test_User_User extends \Test\TestCase {
* @expectedException \Exception
*/
public function testGetHomePathConfiguredNotAvailableNotAllowed() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) =
+ list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
$this->getTestInstances();
list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
+ $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc, $userMgr);
$connection->expects($this->any())
->method('__get')
@@ -882,7 +890,7 @@ class Test_User_User extends \Test\TestCase {
$dn = 'uid=alice,dc=foo,dc=bar';
$user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr);
+ $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
$user->getHomePath();
}
diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php
index 03ff90c29d1..0ae18a2aa96 100644
--- a/apps/user_ldap/tests/user_ldap.php
+++ b/apps/user_ldap/tests/user_ldap.php
@@ -84,7 +84,8 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
$this->getMock('\OCA\user_ldap\lib\LogWrapper'),
$this->getMock('\OCP\IAvatarManager'),
$this->getMock('\OCP\Image'),
- $this->getMock('\OCP\IDBConnection')
+ $this->getMock('\OCP\IDBConnection'),
+ $this->getMock('\OCP\IUserManager')
])
->getMock();
diff --git a/lib/private/server.php b/lib/private/server.php
index 642267e8568..db36fbc1433 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -229,6 +229,10 @@ class Server extends ServerContainer implements IServerContainer {
$userSession->listen('\OC\User', 'logout', function () {
\OC_Hook::emit('OC_User', 'logout', array());
});
+ $userSession->listen('\OC\User', 'changeUser', function ($user) {
+ /** @var $user \OC\User\User */
+ \OC_Hook::emit('OC_User', 'changeUser', array('run' => true, 'user' => $user));
+ });
return $userSession;
});
$this->registerService('NavigationManager', function ($c) {
diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php
index 2aafe98cef2..b547f981616 100644
--- a/lib/private/user/manager.php
+++ b/lib/private/user/manager.php
@@ -44,6 +44,7 @@ use OCP\IConfig;
* - postDelete(\OC\User\User $user)
* - preCreateUser(string $uid, string $password)
* - postCreateUser(\OC\User\User $user, string $password)
+ * - change(\OC\User\User $user)
*
* @package OC\User
*/
diff --git a/lib/private/user/user.php b/lib/private/user/user.php
index c2a6acc7664..5b8bb6947a5 100644
--- a/lib/private/user/user.php
+++ b/lib/private/user/user.php
@@ -137,8 +137,13 @@ class User implements IUser {
public function setDisplayName($displayName) {
$displayName = trim($displayName);
if ($this->backend->implementsActions(\OC_User_Backend::SET_DISPLAYNAME) && !empty($displayName)) {
- $this->displayName = $displayName;
$result = $this->backend->setDisplayName($this->uid, $displayName);
+ if ($result) {
+ $this->displayName = $displayName;
+ if ($this->emitter) {
+ $this->emitter->emit('\OC\User', 'changeUser', array($this));
+ }
+ }
return $result !== false;
} else {
return false;
@@ -146,6 +151,24 @@ class User implements IUser {
}
/**
+ * set the email address of the user
+ *
+ * @param string|null $mailAddress
+ * @return void
+ * @since 9.0.0
+ */
+ public function setEMailAddress($mailAddress) {
+ if($mailAddress === '') {
+ $this->config->deleteUserValue($this->uid, 'settings', 'email');
+ } else {
+ $this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
+ }
+ if ($this->emitter) {
+ $this->emitter->emit('\OC\User', 'changeUser', array($this));
+ }
+ }
+
+ /**
* returns the timestamp of the user's last login or 0 if the user did never
* login
*
@@ -365,4 +388,5 @@ class User implements IUser {
return $url;
}
+
}
diff --git a/lib/public/iuser.php b/lib/public/iuser.php
index 06921a1ee23..454d45eae76 100644
--- a/lib/public/iuser.php
+++ b/lib/public/iuser.php
@@ -169,4 +169,13 @@ interface IUser {
* @since 9.0.0
*/
public function getCloudId();
+
+ /**
+ * set the email address of the user
+ *
+ * @param string|null $mailAddress
+ * @return void
+ * @since 9.0.0
+ */
+ public function setEMailAddress($mailAddress);
}
diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php
index 695d72cfb5a..17629fe924f 100644
--- a/settings/controller/userscontroller.php
+++ b/settings/controller/userscontroller.php
@@ -373,7 +373,7 @@ class UsersController extends Controller {
* Send new user mail only if a mail is set
*/
if($email !== '') {
- $this->config->setUserValue($username, 'settings', 'email', $email);
+ $user->setEMailAddress($email);
// data for the mail template
$mailData = array(
@@ -545,11 +545,7 @@ class UsersController extends Controller {
}
// delete user value if email address is empty
- if($mailAddress === '') {
- $this->config->deleteUserValue($id, 'settings', 'email');
- } else {
- $this->config->setUserValue($id, 'settings', 'email', $mailAddress);
- }
+ $user->setEMailAddress($mailAddress);
return new DataResponse(
array(
diff --git a/tests/lib/contacts/localadressbook.php b/tests/lib/contacts/localadressbook.php
index e5c43460835..ad3c088e3cd 100644
--- a/tests/lib/contacts/localadressbook.php
+++ b/tests/lib/contacts/localadressbook.php
@@ -47,6 +47,9 @@ class Test_LocalAddressBook extends \Test\TestCase
class SimpleUserForTesting implements IUser {
+ private $uid;
+ private $displayName;
+
public function __construct($uid, $displayName) {
$this->uid = $uid;
@@ -105,4 +108,7 @@ class SimpleUserForTesting implements IUser {
public function getCloudId() {
}
+
+ public function setEMailAddress($mailAddress) {
+ }
}
diff --git a/tests/lib/user/user.php b/tests/lib/user/user.php
index 1f613edc4e6..a8d688d9c88 100644
--- a/tests/lib/user/user.php
+++ b/tests/lib/user/user.php
@@ -342,7 +342,8 @@ class User extends \Test\TestCase {
$backend->expects($this->once())
->method('setDisplayName')
- ->with('foo','Foo');
+ ->with('foo','Foo')
+ ->willReturn(true);
$user = new \OC\User\User('foo', $backend);
$this->assertTrue($user->setDisplayName('Foo'));
diff --git a/tests/settings/controller/userscontrollertest.php b/tests/settings/controller/userscontrollertest.php
index e1e3c4d4b6b..38fc1ee6102 100644
--- a/tests/settings/controller/userscontrollertest.php
+++ b/tests/settings/controller/userscontrollertest.php
@@ -1679,11 +1679,11 @@ class UsersControllerTest extends \Test\TestCase {
*/
public function setEmailAddressData() {
return [
- /* mailAddress, isValid, expectsUpdate, expectsDelete, canChangeDisplayName, responseCode */
- [ '', true, false, true, true, Http::STATUS_OK ],
- [ 'foo@local', true, true, false, true, Http::STATUS_OK],
- [ 'foo@bar@local', false, false, false, true, Http::STATUS_UNPROCESSABLE_ENTITY],
- [ 'foo@local', true, false, false, false, Http::STATUS_FORBIDDEN],
+ /* mailAddress, isValid, expectsUpdate, canChangeDisplayName, responseCode */
+ [ '', true, true, true, Http::STATUS_OK ],
+ [ 'foo@local', true, true, true, Http::STATUS_OK],
+ [ 'foo@bar@local', false, false, true, Http::STATUS_UNPROCESSABLE_ENTITY],
+ [ 'foo@local', true, false, false, Http::STATUS_FORBIDDEN],
];
}
@@ -1695,7 +1695,7 @@ class UsersControllerTest extends \Test\TestCase {
* @param bool $expectsUpdate
* @param bool $expectsDelete
*/
- public function testSetEmailAddress($mailAddress, $isValid, $expectsUpdate, $expectsDelete, $canChangeDisplayName, $responseCode) {
+ public function testSetEmailAddress($mailAddress, $isValid, $expectsUpdate, $canChangeDisplayName, $responseCode) {
$this->container['IsAdmin'] = true;
$user = $this->getMockBuilder('\OC\User\User')
@@ -1708,6 +1708,13 @@ class UsersControllerTest extends \Test\TestCase {
->expects($this->any())
->method('canChangeDisplayName')
->will($this->returnValue($canChangeDisplayName));
+ $user
+ ->expects($expectsUpdate ? $this->once() : $this->never())
+ ->method('setEMailAddress')
+ ->with(
+ $this->equalTo($mailAddress)
+ );
+
$this->container['UserSession']
->expects($this->atLeastOnce())
->method('getUser')
@@ -1730,26 +1737,6 @@ class UsersControllerTest extends \Test\TestCase {
->will($this->returnValue($user));
}
- $this->container['Config']
- ->expects(($expectsUpdate) ? $this->once() : $this->never())
- ->method('setUserValue')
- ->with(
- $this->equalTo($user->getUID()),
- $this->equalTo('settings'),
- $this->equalTo('email'),
- $this->equalTo($mailAddress)
-
- );
- $this->container['Config']
- ->expects(($expectsDelete) ? $this->once() : $this->never())
- ->method('deleteUserValue')
- ->with(
- $this->equalTo($user->getUID()),
- $this->equalTo('settings'),
- $this->equalTo('email')
-
- );
-
$response = $this->container['UsersController']->setMailAddress($user->getUID(), $mailAddress);
$this->assertSame($responseCode, $response->getStatus());