180 lines
7.4 KiB
PHP
180 lines
7.4 KiB
PHP
<?php
|
|
|
|
try {
|
|
if (isset($_REQUEST['action']) === false) {
|
|
throw new Exception('No action was sent');
|
|
}
|
|
|
|
if (isset($_SESSION['USER_LOGGED']) === false) {
|
|
throw new Exception('There is no logged in user');
|
|
}
|
|
|
|
$action = $_REQUEST['action'];
|
|
$userUid = $_SESSION['USER_LOGGED'];
|
|
$responseProxy = ['success' => true];
|
|
|
|
switch ($action) {
|
|
case 'authSourcesList':
|
|
$start = $_REQUEST['start'] ?? 0;
|
|
$limit = $_REQUEST['limit'] ?? 25;
|
|
$filter = $_REQUEST['textFilter'] ?? '';
|
|
$orderBy = $_REQUEST['orderBy'] ?? '';
|
|
$ascending = $_REQUEST['ascending'] ?? 'asc';
|
|
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->getListAuthSources($userUid, $start, $limit, $orderBy, $ascending, $filter);
|
|
break;
|
|
case 'authSourcesDelete':
|
|
if (!isset($_REQUEST['auth_uid'])) {
|
|
throw new Exception('No auth source UID was sent');
|
|
}
|
|
$authSourceUid = $_REQUEST['auth_uid'];
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->removeAuthSource($authSourceUid);
|
|
break;
|
|
case 'authSourcesVerifyName':
|
|
if (empty($_REQUEST['AUTH_SOURCE_NAME'])) {
|
|
throw new Exception('No auth source UID was sent');
|
|
}
|
|
|
|
$authSourceName = $_REQUEST['AUTH_SOURCE_NAME'];
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->verifyAuthSourceName($authSourceName);
|
|
break;
|
|
case 'authSourcesTestConnection':
|
|
if ($_REQUEST['AUTH_ANONYMOUS'] == '1') {
|
|
$_REQUEST['AUTH_SOURCE_SEARCH_USER'] = '';
|
|
$_REQUEST['AUTH_SOURCE_PASSWORD'] = '';
|
|
}
|
|
|
|
$authSourceData = $_REQUEST;
|
|
$authSourceData['AUTH_SOURCE_VERSION'] = 3;
|
|
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->testConnection($authSourceData);
|
|
break;
|
|
case 'authSourcesSave':
|
|
$temporalData = $_REQUEST;
|
|
|
|
if (isset($temporalData['AUTH_SOURCE_SHOWGRID-checkbox'])) {
|
|
if ($temporalData['AUTH_SOURCE_SHOWGRID-checkbox'] == 'on') {
|
|
$temporalData['AUTH_SOURCE_SHOWGRID'] = 'on';
|
|
$attributes = G::json_decode($temporalData['AUTH_SOURCE_GRID_TEXT']);
|
|
$con = 1;
|
|
foreach ($attributes as $value) {
|
|
$temporalData['AUTH_SOURCE_GRID_ATTRIBUTE'][$con] = (array)$value;
|
|
$con++;
|
|
}
|
|
}
|
|
unset($temporalData['AUTH_SOURCE_SHOWGRID-checkbox']);
|
|
}
|
|
|
|
if ($temporalData['AUTH_ANONYMOUS'] == '1') {
|
|
$temporalData['AUTH_SOURCE_SEARCH_USER'] = '';
|
|
$temporalData['AUTH_SOURCE_PASSWORD'] = '';
|
|
}
|
|
|
|
unset($temporalData['AUTH_SOURCE_GRID_TEXT']);
|
|
unset($temporalData['DELETE1']);
|
|
unset($temporalData['DELETE2']);
|
|
unset($temporalData['AUTH_SOURCE_ATTRIBUTE_IDS']);
|
|
unset($temporalData['AUTH_SOURCE_SHOWGRID_FLAG']);
|
|
unset($temporalData['AUTH_SOURCE_GRID_TEXT']);
|
|
|
|
$commonFields = array('AUTH_SOURCE_UID', 'AUTH_SOURCE_NAME', 'AUTH_SOURCE_PROVIDER', 'AUTH_SOURCE_SERVER_NAME', 'AUTH_SOURCE_PORT', 'AUTH_SOURCE_ENABLED_TLS', 'AUTH_ANONYMOUS', 'AUTH_SOURCE_SEARCH_USER', 'AUTH_SOURCE_PASSWORD', 'AUTH_SOURCE_VERSION', 'AUTH_SOURCE_BASE_DN', 'AUTH_SOURCE_OBJECT_CLASSES', 'AUTH_SOURCE_ATTRIBUTES');
|
|
|
|
$authSourceData = $authSourceExtraData = array();
|
|
foreach ($temporalData as $sField => $sValue) {
|
|
if (in_array($sField, $commonFields)) {
|
|
$authSourceData[$sField] = $sValue;
|
|
} else {
|
|
$authSourceExtraData[$sField] = $sValue;
|
|
}
|
|
}
|
|
|
|
if (!isset($authSourceExtraData['AUTH_SOURCE_SHOWGRID']) || $authSourceExtraData['AUTH_SOURCE_SHOWGRID'] == 'off') {
|
|
unset($authSourceExtraData['AUTH_SOURCE_GRID_ATTRIBUTE']);
|
|
unset($authSourceExtraData['AUTH_SOURCE_SHOWGRID']);
|
|
}
|
|
|
|
$authSourceData['AUTH_SOURCE_DATA'] = $authSourceExtraData;
|
|
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->saveAuthSource($authSourceData);
|
|
break;
|
|
case 'authSourcesImportSearchUsers':
|
|
if (!isset($_REQUEST['sUID'])) {
|
|
throw new Exception('No auth source UID was sent');
|
|
}
|
|
|
|
$authSourceUid = $_POST['sUID'];
|
|
$filters = [
|
|
'start'=> $_POST['start'] ?? 0,
|
|
'limit'=> $_POST['limit'] ?? ($_POST['pageSize'] ?? 10),
|
|
'text'=> $_POST['sKeyword'] ?? ''
|
|
];
|
|
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->searchUsers($authSourceUid, $filters);
|
|
break;
|
|
case 'authSourcesImportUsers':
|
|
if (!isset($_REQUEST['UsersImport'])) {
|
|
throw new Exception('There are no users to import');
|
|
}
|
|
|
|
if (!isset($_REQUEST['AUTH_SOURCE_UID'])) {
|
|
throw new Exception('The auth source UID was not sent');
|
|
}
|
|
|
|
$authSourceUid = $_REQUEST['AUTH_SOURCE_UID'];
|
|
$usersImport = $_REQUEST['UsersImport'];
|
|
$usersImport = json_decode($usersImport, true);
|
|
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->importUsers($authSourceUid, $usersImport);
|
|
break;
|
|
case 'authSourcesImportLoadDepartment':
|
|
if (!isset($_REQUEST['authUid'])) {
|
|
throw new Exception('No auth source UID was sent');
|
|
}
|
|
|
|
$authSourceUid = $_REQUEST['authUid'];
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->searchDepartaments($authSourceUid);
|
|
break;
|
|
case 'authSourcesImportSaveDepartment':
|
|
$authSources = new AuthSources();
|
|
$departmentsDN = $_REQUEST['departmentsDN'];
|
|
$authSourceUid = $_REQUEST['authUid'];
|
|
$responseProxy = $authSources->saveDepartments($departmentsDN, $authSourceUid);
|
|
break;
|
|
case 'authSourcesImportLoadGroup':
|
|
if (!isset($_REQUEST['authUid'])) {
|
|
throw new Exception('No auth source UID was sent');
|
|
}
|
|
|
|
$authSourceUid = $_REQUEST['authUid'];
|
|
$authSources = new AuthSources();
|
|
$responseProxy = $authSources->searchGroups($authSourceUid);
|
|
break;
|
|
case 'authSourcesImportSaveGroup':
|
|
$authSources = new AuthSources();
|
|
$groupsDN = $_REQUEST['groupsDN'];
|
|
$authSourceUid = $_REQUEST['authUid'];
|
|
$responseProxy = $authSources->saveGroups($groupsDN, $authSourceUid);
|
|
break;
|
|
default:
|
|
throw new Exception('The action "' . $action . '" is not allowed');
|
|
break;
|
|
}
|
|
|
|
header('Content-Type: application/json');
|
|
echo json_encode($responseProxy, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
|
} catch (Exception $exception) {
|
|
$responseProxy['success'] = false;
|
|
$responseProxy['message'] = htmlentities($exception->getMessage(), ENT_QUOTES, 'UTF-8');
|
|
|
|
header('Content-Type: application/json');
|
|
echo json_encode($responseProxy, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
|
}
|