diff --git a/ajax/settings.php b/ajax/settings.php --- a/ajax/settings.php +++ b/ajax/settings.php @@ -1,268 +1,268 @@ * * 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 . * */ /** * This is the AJAX portion of the settings page. * * It can: * - Verify the connection settings * - Load autocomplete values for tables * - Load autocomplete values for columns * - Save settings for a given domain * - Load settings for a given domain * * It always returns JSON encoded responses */ namespace OCA\user_sql; // Init owncloud // Check if we are a user \OCP\User::checkAdminUser(); \OCP\JSON::checkAppEnabled('user_sql'); // CSRF checks \OCP\JSON::callCheck(); $helper = new \OCA\user_sql\lib\Helper; $l = \OC::$server->getL10N('user_sql'); $params = $helper -> getParameterArray(); $response = new \OCP\AppFramework\Http\JSONResponse(); // Check if the request is for us if(isset($_POST['appname']) && ($_POST['appname'] === 'user_sql') && isset($_POST['function']) && isset($_POST['domain'])) { $domain = $_POST['domain']; switch($_POST['function']) { // Save the settings for the given domain to the database case 'saveSettings': $parameters = array('host' => $_POST['sql_hostname'], 'password' => $_POST['sql_password'], 'user' => $_POST['sql_username'], 'dbname' => $_POST['sql_database'], 'tablePrefix' => '' ); // Check if the table exists if(!$helper->verifyTable($parameters, $_POST['sql_driver'], $_POST['sql_table'])) { $response->setData(array('status' => 'error', 'data' => array('message' => $l -> t('The selected SQL table '.$_POST['sql_table'].' does not exist!')))); break; } // Retrieve all column settings $columns = array(); foreach($params as $param) { if(strpos($param, 'col_') === 0) { if(isset($_POST[$param]) && $_POST[$param] !== '') $columns[] = $_POST[$param]; } } // Check if the columns exist $status = $helper->verifyColumns($parameters, $_POST['sql_driver'], $_POST['sql_table'], $columns); if($status !== true) { $response->setData(array('status' => 'error', 'data' => array('message' => $l -> t('The selected SQL column(s) do(es) not exist: '.$status)))); break; } // If we reach this point, all settings have been verified foreach($params as $param) { // Special handling for checkbox fields if(isset($_POST[$param])) { if($param === 'set_strip_domain') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_strip_domain_'.$domain, 'true'); } elseif($param === 'set_allow_pwchange') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_allow_pwchange_'.$domain, 'true'); } elseif($param === 'set_active_invert') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_active_invert_'.$domain, 'true'); } elseif($param === 'set_enable_gethome') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_enable_gethome_'.$domain, 'true'); } elseif($param === 'set_force_default_domain') { - \OC::$server->getConfig()->setAppValue('user_sql', 'set_force_default_domain'.$domain, 'true'); + \OC::$server->getConfig()->setAppValue('user_sql', 'set_force_default_domain_'.$domain, 'true'); } else { \OC::$server->getConfig()->setAppValue('user_sql', $param.'_'.$domain, $_POST[$param]); } } else { if($param === 'set_strip_domain') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_strip_domain_'.$domain, 'false'); } elseif($param === 'set_allow_pwchange') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_allow_pwchange_'.$domain, 'false'); } elseif($param === 'set_active_invert') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_active_invert_'.$domain, 'false'); } elseif($param === 'set_enable_gethome') { \OC::$server->getConfig()->setAppValue('user_sql', 'set_enable_gethome_'.$domain, 'false'); } elseif($param === 'set_force_default_domain') { - \OC::$server->getConfig()->setAppValue('user_sql', 'set_force_default_domain'.$domain, 'false'); + \OC::$server->getConfig()->setAppValue('user_sql', 'set_force_default_domain_'.$domain, 'false'); } } } $response->setData(array('status' => 'success', 'data' => array('message' => $l -> t('Application settings successfully stored.')))); break; // Load the settings for a given domain case 'loadSettingsForDomain': $retArr = array(); foreach($params as $param) { $retArr[$param] = \OC::$server->getConfig()->getAppValue('user_sql', $param.'_'.$domain, ''); } $response->setData(array('status' => 'success', 'settings' => $retArr)); break; // Try to verify the database connection settings case 'verifySettings': $cm = new \OC\DB\ConnectionFactory(); if(!isset($_POST['sql_driver'])) { $response->setData(array('status' => 'error', 'data' => array('message' => $l -> t('Error connecting to database: No driver specified.')))); break; } if(($_POST['sql_hostname'] === '') || ($_POST['sql_database'] === '')) { $response->setData(array('status' => 'error', 'data' => array('message' => $l -> t('Error connecting to database: You must specify at least host and database')))); break; } $parameters = array('host' => $_POST['sql_hostname'], 'password' => $_POST['sql_password'], 'user' => $_POST['sql_username'], 'dbname' => $_POST['sql_database'], 'tablePrefix' => '' ); try { $conn = $cm -> getConnection($_POST['sql_driver'], $parameters); $response->setData(array('status' => 'success', 'data' => array('message' => $l -> t('Successfully connected to database')))); } catch(\Exception $e) { $response->setData(array('status' => 'error', 'data' => array('message' => $l -> t('Error connecting to database: ').$e->getMessage()))); } break; // Get the autocompletion values for a column case 'getColumnAutocomplete': $parameters = array('host' => $_POST['sql_hostname'], 'password' => $_POST['sql_password'], 'user' => $_POST['sql_username'], 'dbname' => $_POST['sql_database'], 'tablePrefix' => '' ); if($helper->verifyTable($parameters, $_POST['sql_driver'], $_POST['sql_table'])) $columns = $helper->getColumns($parameters, $_POST['sql_driver'], $_POST['sql_table']); else $columns = array(); $search = $_POST['request']; $ret = array(); foreach($columns as $name) { if(($search === '') || ($search === 'search') || (strpos($name, $search) === 0)) { $ret[] = array('label' => $name, 'value' => $name); } } $response -> setData($ret); break; // Get the autocompletion values for a table case 'getTableAutocomplete': $parameters = array('host' => $_POST['sql_hostname'], 'password' => $_POST['sql_password'], 'user' => $_POST['sql_username'], 'dbname' => $_POST['sql_database'], 'tablePrefix' => '' ); $tables = $helper->getTables($parameters, $_POST['sql_driver']); $search = $_POST['request']; $ret = array(); foreach($tables as $name) { if(($search === '') || ($search === 'search') || (strpos($name, $search) === 0)) { $ret[] = array('label' => $name, 'value' => $name); } } $response -> setData($ret); break; } } else { // If the request was not for us, set an error message $response->setData(array('status' => 'error', 'data' => array('message' => $l -> t('Not submitted for us.')))); } // Return the JSON array echo $response->render(); diff --git a/templates/settings.php b/templates/settings.php --- a/templates/settings.php +++ b/templates/settings.php @@ -1,174 +1,174 @@ = 7 ? 'section' : 'personalblock'; ?>

t('SQL User Backend')); ?>

'MySQL', 'pgsql' => 'PostgreSQL'); ?>

>
t('Allow changing passwords. Imposes a security risk as password salts are not recreated')); ?>

'MD5', 'md5crypt' => 'MD5 Crypt', 'cleartext' => 'Cleartext', 'mysql_encrypt' => 'mySQL ENCRYPT()', 'system' => 'System (crypt)', 'mysql_password' => 'mySQL PASSWORD()', 'joomla' => 'Joomla MD5 Encryption', 'joomla2' => 'Joomla > 2.5.18 phpass', 'ssha256' => 'Salted SSHA256', 'redmine' => 'Redmine', 'crammd5' => 'CRAM-MD5', 'hmacmd5' => 'HMAC-MD5'); ?>

/>
t("Invert the logic of the active column (for blocked users in the SQL DB)")); ?>

'No Synchronisation', 'initial' => 'Synchronise only once', 'forceoc' => 'ownCloud always wins', 'forcesql' => 'SQL always wins'); ?>


t('Append this string, e.g. a domain name, to each user name. The @-sign is automatically inserted.')); ?>

-

/>
t("Always append the default domain, even if the user entered a domain name")); ?>

/>
t("Strip Domain Part including @-sign from Username when logging in and retrieving username lists")); ?>

/>

'SQL Column', 'static' => 'Static (with Variables)'); ?>


t('You can use the placeholders %%u to specify the user ID (before appending the default domain), %%ud to specify the user ID (after appending the default domain) and %%d to specify the default domain')); ?>

t('Saving...')); ?>
t('Loading...')); ?>
t('Verifying...')); ?>