[Pkg-owncloud-commits] [owncloud] 27/90: forgotten file
David Prévot
taffit at moszumanska.debian.org
Fri Feb 6 21:10:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository owncloud.
commit 1d54735d5de74ee8a60a040b0f0125c041de6cc9
Author: Arthur Schiwon <blizzz at owncloud.com>
Date: Wed Dec 17 13:52:09 2014 +0100
forgotten file
---
apps/user_ldap/command/checkuser.php | 129 +++++++++++++++++++++++++++++++++++
1 file changed, 129 insertions(+)
diff --git a/apps/user_ldap/command/checkuser.php b/apps/user_ldap/command/checkuser.php
new file mode 100644
index 0000000..c6980da
--- /dev/null
+++ b/apps/user_ldap/command/checkuser.php
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Copyright (c) 2014 Arthur Schiwon <blizzz at owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\user_ldap\Command;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+use OCA\user_ldap\lib\user\User;
+use OCA\User_LDAP\lib\user\Manager;
+use OCA\user_ldap\lib\Helper;
+use OCA\user_ldap\User_Proxy;
+
+class CheckUser extends Command {
+ /** @var OCA\user_ldap\User_Proxy */
+ protected $backend;
+
+ /** @var OCA\User_LDAP\lib\Helper */
+ protected $helper;
+
+ /** @var \OCP\IConfig */
+ protected $config;
+
+ /**
+ * @param OCA\user_ldap\User_Proxy $uBackend
+ * @param OCA\User_LDAP\lib\Helper $helper
+ * @param OCP\IConfig $config
+ */
+ public function __construct(User_Proxy $uBackend, Helper $helper, \OCP\IConfig $config) {
+ $this->backend = $uBackend;
+ $this->helper = $helper;
+ $this->config = $config;
+ parent::__construct();
+ }
+
+ protected function configure() {
+ $this
+ ->setName('ldap:check-user')
+ ->setDescription('checks whether a user exists on LDAP.')
+ ->addArgument(
+ 'ocName',
+ InputArgument::REQUIRED,
+ 'the user name as used in ownCloud'
+ )
+ ->addOption(
+ 'force',
+ null,
+ InputOption::VALUE_NONE,
+ 'ignores disabled LDAP configuration'
+ )
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ try {
+ $uid = $input->getArgument('ocName');
+ $this->isAllowed($input->getOption('force'));
+ $this->confirmUserIsMapped($uid);
+ $exists = $this->backend->userExistsOnLDAP($uid);
+ if($exists === true) {
+ $output->writeln('The user is still available on LDAP.');
+ return;
+ }
+
+ // TODO FIXME consolidate next line in DeletedUsersIndex
+ // (impractical now, because of class dependencies)
+ $this->config->setUserValue($uid, 'user_ldap', 'isDeleted', '1');
+
+ $output->writeln('The user does not exists on LDAP anymore.');
+ $output->writeln('Clean up the user\'s remnants by: ./occ user:delete "'
+ . $uid . '"');
+ } catch (\Exception $e) {
+ $output->writeln('<error>' . $e->getMessage(). '</error>');
+ }
+ }
+
+ /**
+ * checks whether a user is actually mapped
+ * @param string $ocName the username as used in ownCloud
+ * @throws \Exception
+ * @return bool
+ */
+ protected function confirmUserIsMapped($ocName) {
+ //TODO FIXME this should go to Mappings in OC 8
+ $db = \OC::$server->getDatabaseConnection();
+ $query = $db->prepare('
+ SELECT
+ `ldap_dn` AS `dn`
+ FROM `*PREFIX*ldap_user_mapping`
+ WHERE `owncloud_name` = ?'
+ );
+
+ $query->execute(array($ocName));
+ $result = $query->fetchColumn();
+
+ if($result === false) {
+ throw new \Exception('The given user is not a recognized LDAP user.');
+ }
+
+ return true;
+ }
+
+ /**
+ * checks whether the setup allows reliable checking of LDAP user existance
+ * @throws \Exception
+ * @return bool
+ */
+ protected function isAllowed($force) {
+ if($this->helper->haveDisabledConfigurations() && !$force) {
+ throw new \Exception('Cannot check user existance, because '
+ . 'disabled LDAP configurations are present.');
+ }
+
+ // we don't check ldapUserCleanupInterval from config.php because this
+ // action is triggered manually, while the setting only controls the
+ // background job.
+
+ return true;
+ }
+
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git
More information about the Pkg-owncloud-commits
mailing list