Blame view

sources/apps/user_ldap/ajax/wizard.php 2.89 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
  <?php
  
  /**
   * ownCloud - user_ldap
   *
   * @author Arthur Schiwon
   * @copyright 2013 Arthur Schiwon blizzz@owncloud.com
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
   * License as published by the Free Software Foundation; either
   * version 3 of the License, or any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
   *
   * You should have received a copy of the GNU Affero General Public
   * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
   *
   */
  
  // Check user and app status
  OCP\JSON::checkAdminUser();
  OCP\JSON::checkAppEnabled('user_ldap');
  OCP\JSON::callCheck();
  
  $l=OC_L10N::get('user_ldap');
  
  if(!isset($_POST['action'])) {
  	\OCP\JSON::error(array('message' => $l->t('No action specified')));
  }
  $action = $_POST['action'];
  
  
  if(!isset($_POST['ldap_serverconfig_chooser'])) {
  	\OCP\JSON::error(array('message' => $l->t('No configuration specified')));
  }
  $prefix = $_POST['ldap_serverconfig_chooser'];
  
  $ldapWrapper = new OCA\user_ldap\lib\LDAP();
  $configuration = new \OCA\user_ldap\lib\Configuration($prefix);
  $wizard = new \OCA\user_ldap\lib\Wizard($configuration, $ldapWrapper);
  
  switch($action) {
  	case 'guessPortAndTLS':
  	case 'guessBaseDN':
  	case 'determineGroupMemberAssoc':
  	case 'determineUserObjectClasses':
  	case 'determineGroupObjectClasses':
  	case 'determineGroupsForUsers':
  	case 'determineGroupsForGroups':
  	case 'determineAttributes':
  	case 'getUserListFilter':
  	case 'getLoginFilterMode':
  	case 'getUserLoginFilter':
  	case 'getUserFilterMode':
  	case 'getGroupFilter':
  	case 'getGroupFilterMode':
  	case 'countUsers':
  	case 'countGroups':
  		try {
  			$result = $wizard->$action();
  			if($result !== false) {
  				OCP\JSON::success($result->getResultArray());
  				exit;
  			}
  		} catch (\Exception $e) {
  			\OCP\JSON::error(array('message' => $e->getMessage()));
  			exit;
  		}
  		\OCP\JSON::error();
  		exit;
  		break;
  
  	case 'save':
  		$key = isset($_POST['cfgkey']) ? $_POST['cfgkey'] : false;
  		$val = isset($_POST['cfgval']) ? $_POST['cfgval'] : null;
  		if($key === false || is_null($val)) {
  			\OCP\JSON::error(array('message' => $l->t('No data specified')));
  			exit;
  		}
  		$cfg = array($key => $val);
  		$setParameters = array();
  		$configuration->setConfiguration($cfg, $setParameters);
  		if(!in_array($key, $setParameters)) {
  			\OCP\JSON::error(array('message' => $l->t($key.
  				' Could not set configuration %s', $setParameters[0])));
  			exit;
  		}
  		$configuration->saveConfiguration();
  		//clear the cache on save
  		$connection = new \OCA\user_ldap\lib\Connection($ldapWrapper, $prefix);
  		$connection->clearCache();
  		OCP\JSON::success();
  		break;
  	default:
  		//TODO: return 4xx error
  		break;
  }