diff --git a/data/web/admin.php b/data/web/admin.php index d78f3621..a4a014b9 100644 --- a/data/web/admin.php +++ b/data/web/admin.php @@ -487,7 +487,7 @@ if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CAC - +
@@ -1005,8 +1005,8 @@ if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CAC
- - + +
diff --git a/data/web/edit.php b/data/web/edit.php index 10896077..9cda0fd9 100644 --- a/data/web/edit.php +++ b/data/web/edit.php @@ -713,7 +713,7 @@ if (isset($_SESSION['mailcow_cc_role'])) {
-
+
diff --git a/data/web/inc/functions.mailbox.inc.php b/data/web/inc/functions.mailbox.inc.php index 740fca3f..f9fe0184 100644 --- a/data/web/inc/functions.mailbox.inc.php +++ b/data/web/inc/functions.mailbox.inc.php @@ -816,7 +816,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { 'force_pw_update' => strval(intval($MAILBOX_DEFAULT_ATTRIBUTES['force_pw_update'])), 'tls_enforce_in' => strval(intval($MAILBOX_DEFAULT_ATTRIBUTES['tls_enforce_in'])), 'tls_enforce_out' => strval(intval($MAILBOX_DEFAULT_ATTRIBUTES['tls_enforce_out'])), - 'sogo_access' => strval(intval($MAILBOX_DEFAULT_ATTRIBUTES['sogo_access'])), + 'sogo_access' => (!isset($_SESSION['acl']['sogo_access']) || $_SESSION['acl']['sogo_access'] != "1") ? 0 : strval(intval($MAILBOX_DEFAULT_ATTRIBUTES['sogo_access'])), 'mailbox_format' => strval($MAILBOX_DEFAULT_ATTRIBUTES['mailbox_format']), 'quarantine_notification' => strval($MAILBOX_DEFAULT_ATTRIBUTES['quarantine_notification']) ) @@ -2065,7 +2065,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { if (!empty($is_now)) { $active = (isset($_data['active'])) ? intval($_data['active']) : $is_now['active_int']; (int)$force_pw_update = (isset($_data['force_pw_update'])) ? intval($_data['force_pw_update']) : intval($is_now['attributes']['force_pw_update']); - (int)$sogo_access = (isset($_data['sogo_access'])) ? intval($_data['sogo_access']) : intval($is_now['attributes']['sogo_access']); + (int)$sogo_access = (isset($_data['sogo_access']) && isset($_SESSION['acl']['sogo_access']) && $_SESSION['acl']['sogo_access'] == "1") ? intval($_data['sogo_access']) : intval($is_now['attributes']['sogo_access']); (int)$quota_m = (isset_has_content($_data['quota'])) ? intval($_data['quota']) : ($is_now['quota'] / 1048576); $name = (!empty($_data['name'])) ? ltrim(rtrim($_data['name'], '>'), '<') : $is_now['name']; $domain = $is_now['domain']; diff --git a/data/web/inc/init_db.inc.php b/data/web/inc/init_db.inc.php index e1daed63..eafcfec8 100644 --- a/data/web/inc/init_db.inc.php +++ b/data/web/inc/init_db.inc.php @@ -3,7 +3,7 @@ function init_db_schema() { try { global $pdo; - $db_version = "29092019_1040"; + $db_version = "09102019_1040"; $stmt = $pdo->query("SHOW TABLES LIKE 'versions'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); @@ -474,6 +474,7 @@ function init_db_schema() { "syncjobs" => "TINYINT(1) NOT NULL DEFAULT '1'", "quarantine" => "TINYINT(1) NOT NULL DEFAULT '1'", "login_as" => "TINYINT(1) NOT NULL DEFAULT '1'", + "sogo_access" => "TINYINT(1) NOT NULL DEFAULT '1'", "bcc_maps" => "TINYINT(1) NOT NULL DEFAULT '1'", "filters" => "TINYINT(1) NOT NULL DEFAULT '1'", "ratelimit" => "TINYINT(1) NOT NULL DEFAULT '1'", @@ -933,7 +934,7 @@ function init_db_schema() { if (strtolower($key_type) == 'unique') { foreach ($key_content as $key_name => $key_values) { $fields = "`" . implode("`, `", $key_values) . "`"; - $stmt = $pdo->query("SHOW KEYS FROM `" . $table . "` WHERE Key_name = '" . $key_name . "'"); + $stmt = $pdo->query("SHOW KEYS FROM `" . $table . "` WHERE Key_name = '" . $key_name . "'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); $is_drop = ($num_results != 0) ? "DROP INDEX `" . $key_name . "`, " : ""; $pdo->query("ALTER TABLE `" . $table . "` " . $is_drop . "ADD UNIQUE KEY `" . $key_name . "` (" . $fields . ")"); @@ -942,7 +943,7 @@ function init_db_schema() { if (strtolower($key_type) == 'fkey') { foreach ($key_content as $key_name => $key_values) { $fields = "`" . implode("`, `", $key_values) . "`"; - $stmt = $pdo->query("SHOW KEYS FROM `" . $table . "` WHERE Key_name = '" . $key_name . "'"); + $stmt = $pdo->query("SHOW KEYS FROM `" . $table . "` WHERE Key_name = '" . $key_name . "'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); if ($num_results != 0) { $pdo->query("ALTER TABLE `" . $table . "` DROP INDEX `" . $key_name . "`"); diff --git a/data/web/lang/lang.de.php b/data/web/lang/lang.de.php index ea0b1d40..d02d5236 100644 --- a/data/web/lang/lang.de.php +++ b/data/web/lang/lang.de.php @@ -420,6 +420,7 @@ $lang['acl']['recipient_maps'] = 'Empfängerumschreibungen'; $lang['acl']['unlimited_quota'] = 'Unendliche Quota für Mailboxen'; $lang['acl']['extend_sender_acl'] = 'Eingabe externer Absenderadressen erlauben'; $lang['acl']['prohibited'] = 'Untersagt durch Richtlinie'; +$lang['acl']['sogo_access'] = 'Verwalten des SOGo Zugriffsrechts erlauben'; $lang['edit']['extended_sender_acl'] = 'Externe Absenderadressen'; $lang['edit']['extended_sender_acl_info'] = 'Der DKIM Domainkey der externen Absenderdomain sollte in diesen Server importiert werden, falls vorhanden.
diff --git a/data/web/lang/lang.en.php b/data/web/lang/lang.en.php index 5d170072..cc718161 100644 --- a/data/web/lang/lang.en.php +++ b/data/web/lang/lang.en.php @@ -428,6 +428,7 @@ $lang['acl']['recipient_maps'] = 'Recipient maps'; $lang['acl']['unlimited_quota'] = 'Unlimited quota for mailboxes'; $lang['acl']['extend_sender_acl'] = 'Allow to extend sender ACL by external addresses'; $lang['acl']['prohibited'] = 'Prohibited by ACL'; +$lang['acl']['sogo_access'] = 'Allow management of SOGo access'; $lang['edit']['extended_sender_acl'] = 'External sender addresses'; $lang['edit']['extended_sender_acl_info'] = 'A DKIM domain key should be imported, if available.
@@ -938,4 +939,3 @@ $lang['mailbox']['alias_domain_backupmx'] = 'Alias domain inactive for relay dom $lang['danger']['extra_acl_invalid'] = 'External sender address "%s" is invalid'; $lang['danger']['extra_acl_invalid_domain'] = 'External sender "%s" uses an invalid domain'; -