mirror of
https://github.com/nextcloud/server.git
synced 2026-02-03 20:41:22 -05:00
First step of a somewhat testable user management. - I know, the JSON returns are in an ugly format but the JS expects it that way. So let's keep it that way until we have time to fix the JS in the future.
140 lines
2.9 KiB
PHP
140 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* @author Lukas Reschke
|
|
* @copyright 2014 Lukas Reschke lukas@owncloud.com
|
|
*
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later.
|
|
* See the COPYING-README file.
|
|
*/
|
|
|
|
namespace OC\Settings\Controller;
|
|
|
|
use \OCP\AppFramework\Controller;
|
|
use OCP\AppFramework\Http\DataResponse;
|
|
use OCP\IGroupManager;
|
|
use OCP\IL10N;
|
|
use OCP\IRequest;
|
|
use OCP\IUserSession;
|
|
|
|
/**
|
|
* @package OC\Settings\Controller
|
|
*/
|
|
class GroupsController extends Controller {
|
|
/** @var IGroupManager */
|
|
private $groupManager;
|
|
/** @var IL10N */
|
|
private $l10n;
|
|
/** @var IUserSession */
|
|
private $userSession;
|
|
/** @var bool */
|
|
private $isAdmin;
|
|
|
|
/**
|
|
* @param string $appName
|
|
* @param IRequest $request
|
|
* @param IGroupManager $groupManager
|
|
* @param IUserSession $userSession
|
|
* @param bool $isAdmin
|
|
* @param IL10N $l10n
|
|
*/
|
|
public function __construct($appName,
|
|
IRequest $request,
|
|
IGroupManager $groupManager,
|
|
IUserSession $userSession,
|
|
$isAdmin,
|
|
IL10N $l10n) {
|
|
parent::__construct($appName, $request);
|
|
$this->groupManager = $groupManager;
|
|
$this->userSession = $userSession;
|
|
$this->isAdmin = $isAdmin;
|
|
$this->l10n = $l10n;
|
|
}
|
|
|
|
/**
|
|
* @NoAdminRequired
|
|
*
|
|
* @param string $pattern
|
|
* @param bool $filterGroups
|
|
* @return DataResponse
|
|
*/
|
|
public function index($pattern = '', $filterGroups = false) {
|
|
$groupPattern = $filterGroups ? $pattern : '';
|
|
|
|
$groupsInfo = new \OC\Group\MetaData($this->userSession->getUser()->getUID(),
|
|
$this->isAdmin, $this->groupManager);
|
|
$groupsInfo->setSorting($groupsInfo::SORT_USERCOUNT);
|
|
list($adminGroups, $groups) = $groupsInfo->get($groupPattern, $pattern);
|
|
|
|
return new DataResponse(
|
|
array(
|
|
'data' => array('adminGroups' => $adminGroups, 'groups' => $groups)
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param string $id
|
|
* @return DataResponse
|
|
*/
|
|
public function create($id) {
|
|
if($this->groupManager->groupExists($id)) {
|
|
return new DataResponse(
|
|
array(
|
|
'status' => 'error',
|
|
'data' => array(
|
|
'message' => (string)$this->l10n->t('Group already exists.')
|
|
)
|
|
)
|
|
);
|
|
}
|
|
if($this->groupManager->createGroup($id)) {
|
|
return new DataResponse(
|
|
array(
|
|
'status' => 'success',
|
|
'data' => array(
|
|
'groupname' => $id
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
return new DataResponse(
|
|
array(
|
|
'status' => 'error',
|
|
'data' => array(
|
|
'message' => (string)$this->l10n->t('Unable to add group.')
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param string $id
|
|
* @return DataResponse
|
|
*/
|
|
public function destroy($id) {
|
|
$group = $this->groupManager->get($id);
|
|
if ($group) {
|
|
if ($group->delete()) {
|
|
return new DataResponse(
|
|
array(
|
|
'status' => 'success',
|
|
'data' => array(
|
|
'groupname' => $id
|
|
)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
return new DataResponse(
|
|
array(
|
|
'status' => 'error',
|
|
'data' => array(
|
|
'message' => (string)$this->l10n->t('Unable to delete group.')
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
}
|