summaryrefslogtreecommitdiffstats
path: root/apps/provisioning_api
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2017-04-05 14:51:55 +0200
committerJoas Schilling <coding@schilljs.com>2017-04-07 12:50:47 +0200
commit3d628783d93edc7e067dcaaa3f1883dd84108a85 (patch)
treeb24d1bc785a3c18cd25f028f77612a9a33c92e84 /apps/provisioning_api
parent98312a9a58ad4b4990648d5b4ee9aaf711bca035 (diff)
downloadnextcloud-server-3d628783d93edc7e067dcaaa3f1883dd84108a85.tar.gz
nextcloud-server-3d628783d93edc7e067dcaaa3f1883dd84108a85.zip
Allow to change account info via provisioning api
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/provisioning_api')
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php41
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php12
2 files changed, 37 insertions, 16 deletions
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index 9155d34276b..cb4e4b32917 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -290,12 +290,12 @@ class UsersController extends OCSController {
// Find the data
$data['id'] = $targetUserObject->getUID();
$data['quota'] = $this->fillStorageInfo($userId);
- $data['email'] = $targetUserObject->getEMailAddress();
- $data['displayname'] = $targetUserObject->getDisplayName();
- $data['phone'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_PHONE]['value'];
- $data['address'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_ADDRESS]['value'];
- $data['webpage'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_WEBSITE]['value'];
- $data['twitter'] = $userAccount[\OC\Accounts\AccountManager::PROPERTY_TWITTER]['value'];
+ $data[AccountManager::PROPERTY_EMAIL] = $targetUserObject->getEMailAddress();
+ $data[AccountManager::PROPERTY_DISPLAYNAME] = $targetUserObject->getDisplayName();
+ $data[AccountManager::PROPERTY_PHONE] = $userAccount[AccountManager::PROPERTY_PHONE]['value'];
+ $data[AccountManager::PROPERTY_ADDRESS] = $userAccount[AccountManager::PROPERTY_ADDRESS]['value'];
+ $data[AccountManager::PROPERTY_WEBSITE] = $userAccount[AccountManager::PROPERTY_WEBSITE]['value'];
+ $data[AccountManager::PROPERTY_TWITTER] = $userAccount[AccountManager::PROPERTY_TWITTER]['value'];
$data['groups'] = $gids;
return $data;
@@ -327,8 +327,13 @@ class UsersController extends OCSController {
if($userId === $currentLoggedInUser->getUID()) {
// Editing self (display, email)
$permittedFields[] = 'display';
- $permittedFields[] = 'email';
+ $permittedFields[] = AccountManager::PROPERTY_DISPLAYNAME;
+ $permittedFields[] = AccountManager::PROPERTY_EMAIL;
$permittedFields[] = 'password';
+ $permittedFields[] = AccountManager::PROPERTY_PHONE;
+ $permittedFields[] = AccountManager::PROPERTY_ADDRESS;
+ $permittedFields[] = AccountManager::PROPERTY_WEBSITE;
+ $permittedFields[] = AccountManager::PROPERTY_TWITTER;
// If admin they can edit their own quota
if($this->groupManager->isAdmin($currentLoggedInUser->getUID())) {
$permittedFields[] = 'quota';
@@ -340,9 +345,14 @@ class UsersController extends OCSController {
|| $this->groupManager->isAdmin($currentLoggedInUser->getUID())) {
// They have permissions over the user
$permittedFields[] = 'display';
- $permittedFields[] = 'quota';
+ $permittedFields[] = AccountManager::PROPERTY_DISPLAYNAME;
+ $permittedFields[] = AccountManager::PROPERTY_EMAIL;
$permittedFields[] = 'password';
- $permittedFields[] = 'email';
+ $permittedFields[] = AccountManager::PROPERTY_PHONE;
+ $permittedFields[] = AccountManager::PROPERTY_ADDRESS;
+ $permittedFields[] = AccountManager::PROPERTY_WEBSITE;
+ $permittedFields[] = AccountManager::PROPERTY_TWITTER;
+ $permittedFields[] = 'quota';
} else {
// No rights
throw new OCSException('', \OCP\API::RESPOND_UNAUTHORISED);
@@ -355,6 +365,7 @@ class UsersController extends OCSController {
// Process the edit
switch($key) {
case 'display':
+ case AccountManager::PROPERTY_DISPLAYNAME:
$targetUser->setDisplayName($value);
break;
case 'quota':
@@ -381,13 +392,23 @@ class UsersController extends OCSController {
case 'password':
$targetUser->setPassword($value);
break;
- case 'email':
+ case AccountManager::PROPERTY_EMAIL:
if(filter_var($value, FILTER_VALIDATE_EMAIL)) {
$targetUser->setEMailAddress($value);
} else {
throw new OCSException('', 102);
}
break;
+ case AccountManager::PROPERTY_PHONE:
+ case AccountManager::PROPERTY_ADDRESS:
+ case AccountManager::PROPERTY_WEBSITE:
+ case AccountManager::PROPERTY_TWITTER:
+ $userAccount = $this->accountManager->getUser($targetUser);
+ if ($userAccount[$key]['value'] !== $value) {
+ $userAccount[$key]['value'] = $value;
+ $this->accountManager->updateUser($targetUser, $userAccount);
+ }
+ break;
default:
throw new OCSException('', 103);
}
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index b5b63319d35..2c85fe0483b 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -734,7 +734,7 @@ class UsersControllerTest extends TestCase {
'displayname' => 'Demo User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'groups' => ['group0', 'group1', 'group2']
];
@@ -823,7 +823,7 @@ class UsersControllerTest extends TestCase {
'displayname' => 'Demo User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'groups' => []
];
@@ -952,7 +952,7 @@ class UsersControllerTest extends TestCase {
'displayname' => 'Subadmin User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'groups' => []
];
@@ -2636,7 +2636,7 @@ class UsersControllerTest extends TestCase {
'displayname' => 'Demo User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter'
]
);
@@ -2648,7 +2648,7 @@ class UsersControllerTest extends TestCase {
'email' => 'demo@owncloud.org',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'display-name' => 'Demo User'
];
@@ -2696,7 +2696,7 @@ class UsersControllerTest extends TestCase {
'email' => 'demo@owncloud.org',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'displayname' => 'Demo User'
];