* DB config keys for user preferences
*/
public const USER_PREFKEY_FIRSTLOGIN = 'firstLoginAccomplished';
- public const USER_PREFKEY_LASTREFRESH = 'lastFeatureRefresh';
/**
* @brief constructor, make sure the subclasses call this one!
\OCP\Util::connectHook('OC_User', 'post_login', $this, 'handlePasswordExpiry');
}
- /**
- * @brief updates properties like email, quota or avatar provided by LDAP
- * @return null
- */
- public function update() {
- if (is_null($this->dn)) {
- return null;
- }
-
- $hasLoggedIn = $this->config->getUserValue($this->uid, 'user_ldap',
- self::USER_PREFKEY_FIRSTLOGIN, 0);
-
- if ($this->needsRefresh()) {
- $this->updateEmail();
- $this->updateQuota();
- if ($hasLoggedIn !== 0) {
- //we do not need to try it, when the user has not been logged in
- //before, because the file system will not be ready.
- $this->updateAvatar();
- //in order to get an avatar as soon as possible, mark the user
- //as refreshed only when updating the avatar did happen
- $this->markRefreshTime();
- }
- }
- }
-
/**
* marks a user as deleted
*
* @param array $ldapEntry the user entry as retrieved from LDAP
*/
public function processAttributes($ldapEntry) {
- $this->markRefreshTime();
//Quota
$attr = strtolower($this->connection->ldapQuotaAttribute);
if (isset($ldapEntry[$attr])) {
$this->uid, 'user_ldap', self::USER_PREFKEY_FIRSTLOGIN, 1);
}
- /**
- * @brief marks the time when user features like email have been updated
- * @return null
- */
- public function markRefreshTime() {
- $this->config->setUserValue(
- $this->uid, 'user_ldap', self::USER_PREFKEY_LASTREFRESH, time());
- }
-
- /**
- * @brief checks whether user features needs to be updated again by
- * comparing the difference of time of the last refresh to now with the
- * desired interval
- * @return bool
- */
- private function needsRefresh() {
- $lastChecked = $this->config->getUserValue($this->uid, 'user_ldap',
- self::USER_PREFKEY_LASTREFRESH, 0);
-
- if ((time() - (int)$lastChecked) < (int)$this->config->getAppValue('user_ldap', 'updateAttributesInterval', 86400)) {
- return false;
- }
- return true;
- }
-
/**
* Stores a key-value pair in relation to this user
*
$this->user->updateAvatar();
}
- public function testUpdateBeforeFirstLogin() {
- $this->config->expects($this->at(0))
- ->method('getUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(0))
- ->willReturn(0);
- $this->config->expects($this->at(1))
- ->method('getUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->equalTo(0))
- ->willReturn(0);
- $this->config->expects($this->exactly(2))
- ->method('getUserValue');
- $this->config->expects($this->never())
- ->method('setUserValue');
-
- $this->user->update();
- }
-
- public function testUpdateAfterFirstLogin() {
- $this->config->expects($this->at(0))
- ->method('getUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(0))
- ->willReturn(1);
- $this->config->expects($this->at(1))
- ->method('getUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->equalTo(0))
- ->willReturn(0);
- $this->config->expects($this->exactly(2))
- ->method('getUserValue');
- $this->config->expects($this->once())
- ->method('setUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->anything())
- ->willReturn(true);
-
- $this->connection->expects($this->any())
- ->method('resolveRule')
- ->with('avatar')
- ->willReturn(['jpegphoto', 'thumbnailphoto']);
-
- $this->user->update();
- }
-
public function extStorageHomeDataProvider() {
return [
[ 'myFolder', null ],
$this->assertSame($expected, $actual);
}
- public function testUpdateNoRefresh() {
- $this->config->expects($this->at(0))
- ->method('getUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(0))
- ->willReturn(1);
- $this->config->expects($this->at(1))
- ->method('getUserValue')
- ->with($this->equalTo($this->uid), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->equalTo(0))
- ->willReturn(time() - 10);
- $this->config->expects($this->once())
- ->method('getAppValue')
- ->with($this->equalTo('user_ldap'),
- $this->equalTo('updateAttributesInterval'),
- $this->anything())
- ->willReturn(1800);
- $this->config->expects($this->exactly(2))
- ->method('getUserValue');
- $this->config->expects($this->never())
- ->method('setUserValue');
-
- $this->user->update();
- }
-
public function testMarkLogin() {
$this->config->expects($this->once())
->method('setUserValue')
public function testProcessAttributes() {
$requiredMethods = [
- 'markRefreshTime',
'updateQuota',
'updateEmail',
'composeAndStoreDisplayName',