summaryrefslogtreecommitdiffstats
path: root/settings
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-12-08 22:38:54 +0100
committerLukas Reschke <lukas@owncloud.com>2014-12-09 12:04:19 +0100
commit4c13918bd8b12ac4bd341c846a50accc1bf9704d (patch)
tree7b3a4e39511e401ef8b75b49a117d2a8fbe3ab7c /settings
parent25a87d4058b3ec7f21649940949b6fc0237968dc (diff)
downloadnextcloud-server-4c13918bd8b12ac4bd341c846a50accc1bf9704d.tar.gz
nextcloud-server-4c13918bd8b12ac4bd341c846a50accc1bf9704d.zip
Expose backend type via REST API
This change will expose the user backend via the REST API which is a pre-requisite for https://github.com/owncloud/core/issues/12620. For example: ````json [{"name":"9707A09E-CA9A-4ABE-A66A-3F632F16C409","displayname":"Document Conversion User Account","groups":[],"subadmin":[],"quota":"default","storageLocation":"\/Users\/lreschke\/Programming\/core\/data\/9707A09E-CA9A-4ABE-A66A-3F632F16C409","lastLogin":0,"backend":"OCA\\user_ldap\\USER_LDAP"},{"name":"ED86733E-745C-4E4D-90CB-278A9737DB3C","displayname":"Hacker","groups":[],"subadmin":[],"quota":"default","storageLocation":"\/Users\/lreschke\/Programming\/core\/data\/ED86733E-745C-4E4D-90CB-278A9737DB3C","lastLogin":0,"backend":"OCA\\user_ldap\\USER_LDAP"},{"name":"71CDF45B-E125-450D-983C-D9192F36EC88","displayname":"admin","groups":[],"subadmin":[],"quota":"default","storageLocation":"\/Users\/lreschke\/Programming\/core\/data\/71CDF45B-E125-450D-983C-D9192F36EC88","lastLogin":0,"backend":"OCA\\user_ldap\\USER_LDAP"},{"name":"admin","displayname":"admin","groups":["admin"],"subadmin":[],"quota":"default","storageLocation":"\/Users\/lreschke\/Programming\/core\/data\/admin","lastLogin":"1418057287","backend":"OC_User_Database"},{"name":"test","displayname":"test","groups":[],"subadmin":[],"quota":"default","storageLocation":"\/Users\/lreschke\/Programming\/core\/data\/test","lastLogin":0,"backend":"OC_User_Database"}] ```
Diffstat (limited to 'settings')
-rw-r--r--settings/controller/userscontroller.php50
-rw-r--r--settings/js/users/users.js53
2 files changed, 52 insertions, 51 deletions
diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php
index 5bd4b555106..589b0a888cb 100644
--- a/settings/controller/userscontroller.php
+++ b/settings/controller/userscontroller.php
@@ -18,6 +18,7 @@ use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IRequest;
+use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
@@ -66,8 +67,26 @@ class UsersController extends Controller {
}
/**
+ * @param IUser $user
+ * @param array $userGroups
+ * @return array
+ */
+ private function formatUserForIndex(IUser $user, array $userGroups = null) {
+ return array(
+ 'name' => $user->getUID(),
+ 'displayname' => $user->getDisplayName(),
+ 'groups' => (empty($userGroups)) ? $this->groupManager->getUserGroupIds($user) : $userGroups,
+ 'subadmin' => \OC_SubAdmin::getSubAdminsGroups($user->getUID()),
+ 'quota' => $this->config->getUserValue($user->getUID(), 'files', 'quota', 'default'),
+ 'storageLocation' => $user->getHome(),
+ 'lastLogin' => $user->getLastLogin(),
+ 'backend' => $user->getBackendClassName()
+ );
+ }
+
+ /**
* @NoAdminRequired
- * @NoCSRFRequired
+ *
* @param int $offset
* @param int $limit
* @param string $gid
@@ -91,16 +110,7 @@ class UsersController extends Controller {
}
foreach ($batch as $uid => $displayname) {
- $user = $this->userManager->get($uid);
- $users[] = array(
- 'name' => $uid,
- 'displayname' => $displayname,
- 'groups' => $this->groupManager->getUserGroupIds($user),
- 'subadmin' => \OC_SubAdmin::getSubAdminsGroups($uid),
- 'quota' => $this->config->getUserValue($uid, 'files', 'quota', 'default'),
- 'storageLocation' => $user->getHome(),
- 'lastLogin' => $user->getLastLogin(),
- );
+ $users[] = $this->formatUserForIndex($this->userManager->get($uid));
}
} else {
$groups = \OC_SubAdmin::getSubAdminsGroups($this->userSession->getUser()->getUID());
@@ -115,20 +125,13 @@ class UsersController extends Controller {
$user = $this->userManager->get($uid);
// Only add the groups, this user is a subadmin of
- $userGroups = array_intersect($this->groupManager->getUserGroupIds($user), \OC_SubAdmin::getSubAdminsGroups($this->userSession->getUser()->getUID()));
- $users[] = array(
- 'name' => $uid,
- 'displayname' => $user->getDisplayName(),
- 'groups' => $userGroups,
- 'quota' => $this->config->getUserValue($uid, 'files', 'quota', 'default'),
- 'storageLocation' => $user->getHome(),
- 'lastLogin' => $user->getLastLogin(),
- );
+ $userGroups = array_intersect($this->groupManager->getUserGroupIds($user),
+ \OC_SubAdmin::getSubAdminsGroups($this->userSession->getUser()->getUID()));
+ $users[] = $this->formatUserForIndex($user, $userGroups);
}
}
- // FIXME: That assignment on "data" is uneeded here - JS should be adjusted
- return new DataResponse(array('data' => $users, 'status' => 'success'));
+ return new DataResponse($users);
}
/**
@@ -142,7 +145,7 @@ class UsersController extends Controller {
* TODO: Tidy up and write unit tests - code is mainly static method calls
*/
public function create($username, $password, array $groups) {
-
+
if (!$this->isAdmin) {
if (!empty($groups)) {
foreach ($groups as $key => $group) {
@@ -247,7 +250,6 @@ class UsersController extends Controller {
),
Http::STATUS_FORBIDDEN
);
-
}
}
diff --git a/settings/js/users/users.js b/settings/js/users/users.js
index 1bca6d06b33..9c48da32c5a 100644
--- a/settings/js/users/users.js
+++ b/settings/js/users/users.js
@@ -331,35 +331,34 @@ var UserList = {
function (result) {
var loadedUsers = 0;
var trs = [];
- if (result.status === 'success') {
- //The offset does not mirror the amount of users available,
- //because it is backend-dependent. For correct retrieval,
- //always the limit(requested amount of users) needs to be added.
- $.each(result.data, function (index, user) {
- if(UserList.has(user.name)) {
- return true;
- }
- var $tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, user.storageLocation, user.lastLogin, false);
- $tr.addClass('appear transparent');
- trs.push($tr);
- loadedUsers++;
- });
- if (result.data.length > 0) {
- UserList.doSort();
- $userList.siblings('.loading').css('visibility', 'hidden');
- }
- else {
- UserList.noMoreEntries = true;
- $userList.siblings('.loading').remove();
+ //The offset does not mirror the amount of users available,
+ //because it is backend-dependent. For correct retrieval,
+ //always the limit(requested amount of users) needs to be added.
+ $.each(result, function (index, user) {
+ if(UserList.has(user.name)) {
+ return true;
}
- UserList.offset += loadedUsers;
- // animate
- setTimeout(function() {
- for (var i = 0; i < trs.length; i++) {
- trs[i].removeClass('transparent');
- }
- }, 0);
+ var $tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, user.storageLocation, user.lastLogin, false);
+ $tr.addClass('appear transparent');
+ trs.push($tr);
+ loadedUsers++;
+ });
+ if (result.length > 0) {
+ UserList.doSort();
+ $userList.siblings('.loading').css('visibility', 'hidden');
}
+ else {
+ UserList.noMoreEntries = true;
+ $userList.siblings('.loading').remove();
+ }
+ UserList.offset += loadedUsers;
+ // animate
+ setTimeout(function() {
+ for (var i = 0; i < trs.length; i++) {
+ trs[i].removeClass('transparent');
+ }
+ }, 0);
+ }).always(function() {
UserList.updating = false;
});
},