* @author Julius Härtl * @copyright Pellaeon Lin 2015 */ namespace OCA\Registration\Controller; use \OCP\IRequest; use \OCP\AppFramework\Http\TemplateResponse; use \OCP\AppFramework\Http\DataResponse; use \OCP\AppFramework\Http; use \OCP\AppFramework\Controller; use \OCP\IGroupManager; use \OCP\IL10N; use \OCP\IConfig; class SettingsController extends Controller { /** @var IL10N */ private $l10n; /** @var IConfig */ private $config; /** @var IGroupManager */ private $groupmanager; /** @var string */ protected $appName; public function __construct($appName, IRequest $request, IL10N $l10n, IConfig $config, IGroupManager $groupmanager) { parent::__construct($appName, $request); $this->l10n = $l10n; $this->config = $config; $this->groupmanager = $groupmanager; $this->appName = $appName; } /** * @AdminRequired * * @param string $registered_user_group all newly registered user will be put in this group * @param string $allowed_domains Registrations are only allowed for E-Mailadresses with these domains * @param bool $admin_approval_required newly registered users have to be validated by an admin * @return DataResponse */ public function admin($registered_user_group, $allowed_domains, $admin_approval_required) { // handle domains if (($allowed_domains==='') || ($allowed_domains === null)) { $this->config->deleteAppValue($this->appName, 'allowed_domains'); } else { $this->config->setAppValue($this->appName, 'allowed_domains', $allowed_domains); } // handle admin validation $this->config->setAppValue($this->appName, 'admin_approval_required', $admin_approval_required ? "yes" : "no"); // handle groups $groups = $this->groupmanager->search(''); $group_id_list = []; foreach ($groups as $group) { $group_id_list[] = $group->getGid(); } if ($registered_user_group === 'none') { $this->config->deleteAppValue($this->appName, 'registered_user_group'); return new DataResponse([ 'data' => [ 'message' => (string) $this->l10n->t('Saved'), ], 'status' => 'success' ]); } elseif (in_array($registered_user_group, $group_id_list)) { $this->config->setAppValue($this->appName, 'registered_user_group', $registered_user_group); return new DataResponse([ 'data' => [ 'message' => (string) $this->l10n->t('Saved'), ], 'status' => 'success' ]); } else { return new DataResponse([ 'data' => [ 'message' => (string) $this->l10n->t('No such group'), ], 'status' => 'error' ], Http::STATUS_NOT_FOUND); } } /** * @AdminRequired * * @return TemplateResponse */ public function displayPanel() { // handle groups $groups = $this->groupmanager->search(''); $group_id_list = []; foreach ($groups as $group) { $group_id_list[] = $group->getGid(); } $current_value = $this->config->getAppValue($this->appName, 'registered_user_group', 'none'); // handle domains $allowed_domains = $this->config->getAppValue($this->appName, 'allowed_domains', ''); // handle admin validation $admin_approval_required = $this->config->getAppValue($this->appName, 'admin_approval_required', "no"); return new TemplateResponse('registration', 'admin', [ 'groups' => $group_id_list, 'current' => $current_value, 'allowed' => $allowed_domains, 'approval_required' => $admin_approval_required ], ''); } }