From d7b5c4bc7126cc3f2f3018017769be1545da57e1 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Fri, 15 Oct 2010 11:48:05 +0000 Subject: [PATCH] - added possibility to allow customer to login with their domain-name, fixes #374 --- actions/admin/settings/110.accounts.php | 8 ++++ index.php | 39 ++++++++++++++++++- install/froxlor.sql | 3 +- .../updates/froxlor/0.9/update_0.9.inc.php | 13 +++++++ .../preconfig/0.9/preconfig_0.9.inc.php | 9 +++++ lib/tables.inc.php | 2 +- lng/english.lng.php | 3 ++ lng/german.lng.php | 3 ++ 8 files changed, 77 insertions(+), 3 deletions(-) diff --git a/actions/admin/settings/110.accounts.php b/actions/admin/settings/110.accounts.php index ab5ea43f..6b3dc67c 100644 --- a/actions/admin/settings/110.accounts.php +++ b/actions/admin/settings/110.accounts.php @@ -38,6 +38,14 @@ return array( 'default' => false, 'save_method' => 'storeSettingField', ), + 'login_domain_login' => array( + 'label' => $lng['serversettings']['login_domain_login'], + 'settinggroup' => 'login', + 'varname' => 'domain_login', + 'type' => 'bool', + 'default' => false, + 'save_method' => 'storeSettingField', + ), 'login_maxloginattempts' => array( 'label' => $lng['serversettings']['maxloginattempts'], 'settinggroup' => 'login', diff --git a/index.php b/index.php index fc145417..afa59e18 100644 --- a/index.php +++ b/index.php @@ -49,7 +49,44 @@ if($action == 'login') } else { - $is_admin = true; + if((int)$settings['login']['domain_login'] == 1) + { + /** + * check if the customer tries to login with a domain, #374 + */ + $domainname = $idna_convert->encode(preg_replace(Array('/\:(\d)+$/', '/^https?\:\/\//'), '', $loginname)); + $row2 = $db->query_first("SELECT `customerid` FROM `".TABLE_PANEL_DOMAINS."` WHERE `domain` = '".$db->escape($domainname)."'"); + + if(isset($row2['customerid']) && $row2['customerid'] > 0) + { + $loginname = getCustomerDetail($row2['customerid'], 'loginname'); + + if($loginname !== false) + { + $row3 = $db->query_first("SELECT `loginname` AS `customer` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `loginname`='" . $db->escape($loginname) . "'"); + + if($row3['customer'] == $loginname) + { + $table = "`" . TABLE_PANEL_CUSTOMERS . "`"; + $uid = 'customerid'; + $adminsession = '0'; + $is_admin = false; + } + } + else + { + $is_admin = true; + } + } + else + { + $is_admin = true; + } + } + else + { + $is_admin = true; + } } if(hasUpdates($version) && $is_admin == false) diff --git a/install/froxlor.sql b/install/froxlor.sql index 88a1a1b7..42cf1a1e 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -462,7 +462,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (18, 'system', 'vmail_homedir', '/var/customers/mail/'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (19, 'system', 'bindconf_directory', '/etc/bind/'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (20, 'system', 'bindreload_command', '/etc/init.d/bind9 reload'); -INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.14-svn5'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.14-svn6'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (23, 'system', 'hostname', 'SERVERNAME'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (24, 'login', 'maxloginattempts', '3'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (25, 'login', 'deactivatetime', '900'); @@ -594,6 +594,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (152, 'system', 'mod_fcgid_defaultini_ownvhost', '1'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (153, 'system', 'awstats_icons', '/usr/share/awstats/icon/'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (154, 'system', 'ssl_cert_chainfile', ''); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (155, 'login', 'domain_login', '0'); # -------------------------------------------------------- diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index 55916d2f..570669fb 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -1150,3 +1150,16 @@ if(isFroxlorVersion('0.9.14-svn4')) updateToVersion('0.9.14-svn5'); } + +if(isFroxlorVersion('0.9.14-svn5')) +{ + showUpdateStep("Updating from 0.9.14-svn5 to 0.9.14-svn6", false); + + $update_allow_domain_login = isset($_POST['update_allow_domain_login']) ? (int)$_POST['update_allow_domain_login'] : '0'; + + showUpdateStep("Adding domain-login switch to the settings"); + $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('login', 'domain_login', '".(int)$update_allow_domain_login."');"); + lastStepStatus(0); + + updateToVersion('0.9.14-svn6'); +} diff --git a/install/updates/preconfig/0.9/preconfig_0.9.inc.php b/install/updates/preconfig/0.9/preconfig_0.9.inc.php index 3cafbe0e..c17b7d5e 100644 --- a/install/updates/preconfig/0.9/preconfig_0.9.inc.php +++ b/install/updates/preconfig/0.9/preconfig_0.9.inc.php @@ -334,4 +334,13 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version) eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";"); } } + + if(versionInUpdate($current_version, '0.9.14-svn6')) + { + $has_preconfig = true; + $description = 'You can now allow customers to use any of their domains as username for the login.'; + $question = 'Do you want to enable domain-login for all customers?: '; + $question.= makeyesno('update_allow_domain_login', '1', '0', '0'); + eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";"); + } } diff --git a/lib/tables.inc.php b/lib/tables.inc.php index 4b2494de..ff2bb4ed 100644 --- a/lib/tables.inc.php +++ b/lib/tables.inc.php @@ -72,7 +72,7 @@ define('PACKAGE_ENABLED', 2); // VERSION INFO -$version = '0.9.14-svn5'; +$version = '0.9.14-svn6'; $dbversion = '2'; $branding = ''; diff --git a/lng/english.lng.php b/lng/english.lng.php index 5882599d..871486ac 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1510,4 +1510,7 @@ $lng['admin']['ipsandports']['ssl_cert_chainfile'] = 'Path to the SSL Certificat $lng['admin']['ipsandports']['docroot']['title'] = 'Custom docroot (empty = point to Froxlor)'; $lng['admin']['ipsandports']['docroot']['description'] = 'You can define a custom document-root (the destination for a request) for this ip/port combination here.
ATTENTION: Please be careful with what you enter here!'; +// ADDED IN FROXLOR 0.9.14-svn6 +$lng['serversettings']['login_domain_login'] = 'Allow login with domains'; + ?> diff --git a/lng/german.lng.php b/lng/german.lng.php index 0655fdd3..05245d36 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1493,4 +1493,7 @@ $lng['admin']['ipsandports']['ssl_cert_chainfile'] = 'Pfad zu dem SSL Certificat $lng['admin']['ipsandports']['docroot']['title'] = 'Benutzerdefinierter Docroot (leer = zeige auf Froxlor)'; $lng['admin']['ipsandports']['docroot']['description'] = 'Hier kann ein benutzerdefinierter Document-Root (der Zeilordner für einen Zugriff) für diese IP/Port Kombination gesetzt werden.
ACHTUNG: Bitte überlege vorher, welchen Pfad du hier angibst!'; +// ADDED IN FROXLOR 0.9.14-svn6 +$lng['serversettings']['login_domain_login'] = 'Erlaube Anmeldung mit Domains'; + ?>