// 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;
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';
|| $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);
// Process the edit
switch($key) {
case 'display':
+ case AccountManager::PROPERTY_DISPLAYNAME:
$targetUser->setDisplayName($value);
break;
case 'quota':
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);
}
'displayname' => 'Demo User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'groups' => ['group0', 'group1', 'group2']
];
'displayname' => 'Demo User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'groups' => []
];
'displayname' => 'Subadmin User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'groups' => []
];
'displayname' => 'Demo User',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter'
]
);
'email' => 'demo@owncloud.org',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'display-name' => 'Demo User'
];
'email' => 'demo@owncloud.org',
'phone' => 'phone',
'address' => 'address',
- 'webpage' => 'website',
+ 'website' => 'website',
'twitter' => 'twitter',
'displayname' => 'Demo User'
];
$client->send($client->createRequest('GET', $url, $options2));
}
+ /**
+ * @Then /^user "([^"]*)" has$/
+ *
+ * @param string $user
+ * @param \Behat\Gherkin\Node\TableNode|null $settings
+ */
+ public function userHasSetting($user, $settings) {
+ $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users/$user";
+ $client = new Client();
+ $options = [];
+ $options['auth'] = $this->adminUser;
+ $options['headers'] = [
+ 'OCS-APIREQUEST' => 'true',
+ ];
+
+ $response = $client->send($client->createRequest("GET", $fullUrl, $options));
+ foreach ($settings->getRows() as $setting) {
+ $value = json_decode(json_encode($response->xml()->data->{$setting[0]}), 1);
+ if (isset($value[0])) {
+ PHPUnit_Framework_Assert::assertEquals($setting[1], $value[0], "", 0.0, 10, true);
+ } else {
+ PHPUnit_Framework_Assert::assertEquals('', $setting[1]);
+ }
+ }
+ }
+
public function createUser($user) {
$previous_user = $this->currentUser;
$this->currentUser = "admin";
| password | 123456 |
Then the OCS status code should be "102"
And the HTTP status code should be "200"
+ And user "brand-new-user" has
+ | id | brand-new-user |
+ | displayname | brand-new-user |
+ | email | |
+ | phone | |
+ | address | |
+ | website | |
+ | twitter | |
Scenario: Get an existing user
Given As an "admin"
Given As an "admin"
And user "brand-new-user" exists
When sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | displayname |
+ | value | Brand New User |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
| key | quota |
| value | 12MB |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
| key | email |
| value | brand-new-user@gmail.com |
- Then the OCS status code should be "100"
+ And the OCS status code should be "100"
And the HTTP status code should be "200"
- And user "brand-new-user" exists
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | phone |
+ | value | 0123 456 789 |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | address |
+ | value | Foo Bar Town |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | website |
+ | value | https://nextcloud.com |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And sending "PUT" to "/cloud/users/brand-new-user" with
+ | key | twitter |
+ | value | Nextcloud |
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then user "brand-new-user" has
+ | id | brand-new-user |
+ | displayname | Brand New User |
+ | email | brand-new-user@gmail.com |
+ | phone | 0123 456 789 |
+ | address | Foo Bar Town |
+ | website | https://nextcloud.com |
+ | twitter | Nextcloud |
Scenario: Create a group
Given As an "admin"