From acdd2013a7c660340fabb5fb55be1e78103388c6 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 03 Sep 2010 09:10:37 -0400
Subject: [PATCH] FS#1262 - client menu depending on limits
---
interface/lib/classes/auth.inc.php | 30 ++++
interface/web/mail/lib/module.conf.php | 143 ++++++++++++++---------
interface/web/sites/lib/module.conf.php | 187 +++++++++++++++++--------------
3 files changed, 218 insertions(+), 142 deletions(-)
diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index a264169..0315ed9 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -29,6 +29,12 @@
*/
class auth {
+ var $client_limits = null;
+
+ public function get_user_id()
+ {
+ return $_SESSION['s']['user']['userid'];
+ }
public function is_admin() {
if($_SESSION['s']['user']['typ'] == 'admin') {
@@ -36,7 +42,7 @@
} else {
return false;
}
- }
+ }
public function has_clients($userid) {
global $app, $conf;
@@ -69,6 +75,25 @@
return false;
}
}
+
+ //** This function returns given client limit as integer, -1 means no limit
+ public function get_client_limit($userid, $limitname)
+ {
+ global $app;
+
+ // simple query cache
+ if($this->client_limits===null)
+ $this->client_limits = $app->db->queryOneRecord("SELECT client.* FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
+
+ // isn't client -> no limit
+ if(!$this->client_limits)
+ return -1;
+
+ if(isset($this->client_limits['limit_'.$limitname]))
+ return $this->client_limits['limit_'.$limitname];
+ else
+ trigger_error('Wrong limit identifier');
+ }
//** This function removes a given group id from a given user.
public function remove_group_from_user($userid,$groupid) {
@@ -99,8 +124,7 @@
exit;
}
}
-
-
+
}
?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php
index a0f1b74..c69fe41 100644
--- a/interface/web/mail/lib/module.conf.php
+++ b/interface/web/mail/lib/module.conf.php
@@ -1,5 +1,7 @@
<?php
+$userid=$app->auth->get_user_id();
+
$module['name'] = 'mail';
$module['title'] = 'top_menu_email';
$module['template'] = 'module.tpl.htm';
@@ -10,60 +12,86 @@
//**** Email accounts menu
$items = array();
-$items[] = array( 'title' => 'Domain',
- 'target' => 'content',
- 'link' => 'mail/mail_domain_list.php',
- 'html_id' => 'mail_domain_list');
+if($app->auth->get_client_limit($userid,'maildomain') != 0)
+{
+ $items[] = array( 'title' => 'Domain',
+ 'target' => 'content',
+ 'link' => 'mail/mail_domain_list.php',
+ 'html_id' => 'mail_domain_list');
+}
+
+if($app->auth->get_client_limit($userid,'mailaliasdomain') != 0)
+{
+ $items[] = array( 'title' => 'Domain Alias',
+ 'target' => 'content',
+ 'link' => 'mail/mail_aliasdomain_list.php',
+ 'html_id' => 'mail_aliasdomain_list');
+}
-$items[] = array( 'title' => 'Domain Alias',
- 'target' => 'content',
- 'link' => 'mail/mail_aliasdomain_list.php',
- 'html_id' => 'mail_aliasdomain_list');
+if($app->auth->get_client_limit($userid,'mailbox') != 0)
+{
+ $items[] = array( 'title' => 'Email Mailbox',
+ 'target' => 'content',
+ 'link' => 'mail/mail_user_list.php',
+ 'html_id' => 'mail_user_list');
+}
-$items[] = array( 'title' => 'Email Mailbox',
- 'target' => 'content',
- 'link' => 'mail/mail_user_list.php',
- 'html_id' => 'mail_user_list');
+if($app->auth->get_client_limit($userid,'mailalias') != 0)
+{
+ $items[] = array( 'title' => 'Email Alias',
+ 'target' => 'content',
+ 'link' => 'mail/mail_alias_list.php',
+ 'html_id' => 'mail_alias_list');
+}
-$items[] = array( 'title' => 'Email Alias',
- 'target' => 'content',
- 'link' => 'mail/mail_alias_list.php',
- 'html_id' => 'mail_alias_list');
+if($app->auth->get_client_limit($userid,'mailforward') != 0)
+{
+ $items[] = array( 'title' => 'Email Forward',
+ 'target' => 'content',
+ 'link' => 'mail/mail_forward_list.php',
+ 'html_id' => 'mail_forward_list');
+}
-$items[] = array( 'title' => 'Email Forward',
- 'target' => 'content',
- 'link' => 'mail/mail_forward_list.php',
- 'html_id' => 'mail_forward_list');
+if($app->auth->get_client_limit($userid,'mailcatchall') != 0)
+{
+ $items[] = array( 'title' => 'Email Catchall',
+ 'target' => 'content',
+ 'link' => 'mail/mail_domain_catchall_list.php',
+ 'html_id' => 'mail_domain_catchall_list');
+}
-$items[] = array( 'title' => 'Email Catchall',
- 'target' => 'content',
- 'link' => 'mail/mail_domain_catchall_list.php',
- 'html_id' => 'mail_domain_catchall_list');
+if($app->auth->get_client_limit($userid,'mailrouting') != 0)
+{
+ $items[] = array( 'title' => 'Email Routing',
+ 'target' => 'content',
+ 'link' => 'mail/mail_transport_list.php',
+ 'html_id' => 'mail_transport_list');
+}
-$items[] = array( 'title' => 'Email Routing',
- 'target' => 'content',
- 'link' => 'mail/mail_transport_list.php',
- 'html_id' => 'mail_transport_list');
-
-$module['nav'][] = array( 'title' => 'Email Accounts',
- 'open' => 1,
- 'items' => $items);
+if(count($items))
+{
+ $module['nav'][] = array( 'title' => 'Email Accounts',
+ 'open' => 1,
+ 'items' => $items);
+}
//**** Spamfilter menu
$items = array();
-$items[] = array( 'title' => 'Whitelist',
- 'target' => 'content',
- 'link' => 'mail/spamfilter_whitelist_list.php',
- 'html_id' => 'spamfilter_whitelist_list');
+if($app->auth->get_client_limit($userid,'spamfilter_wblist') != 0)
+{
+ $items[] = array( 'title' => 'Whitelist',
+ 'target' => 'content',
+ 'link' => 'mail/spamfilter_whitelist_list.php',
+ 'html_id' => 'spamfilter_whitelist_list');
+
+ $items[] = array( 'title' => 'Blacklist',
+ 'target' => 'content',
+ 'link' => 'mail/spamfilter_blacklist_list.php',
+ 'html_id' => 'spamfilter_blacklist_list');
+}
-
-$items[] = array( 'title' => 'Blacklist',
- 'target' => 'content',
- 'link' => 'mail/spamfilter_blacklist_list.php',
- 'html_id' => 'spamfilter_blacklist_list');
-
-if($_SESSION['s']['user']['typ'] == 'admin') {
+if($app->auth->is_admin()) {
$items[] = array( 'title' => 'User / Domain',
'target' => 'content',
@@ -79,23 +107,30 @@
// 'target' => 'content',
// 'link' => 'mail/spamfilter_config_list.php');
}
-$module['nav'][] = array( 'title' => 'Spamfilter',
- 'open' => 1,
- 'items' => $items);
+
+if(count($items))
+{
+ $module['nav'][] = array( 'title' => 'Spamfilter',
+ 'open' => 1,
+ 'items' => $items);
+}
//**** Fetchmail menu
$items = array();
-$items[] = array( 'title' => 'Fetchmail',
- 'target' => 'content',
- 'link' => 'mail/mail_get_list.php',
- 'html_id' => 'mail_get_list');
+if($app->auth->get_client_limit($userid,'fetchmail') != 0)
+{
+ $items[] = array( 'title' => 'Fetchmail',
+ 'target' => 'content',
+ 'link' => 'mail/mail_get_list.php',
+ 'html_id' => 'mail_get_list');
+
+ $module['nav'][] = array( 'title' => 'Fetchmail',
+ 'open' => 1,
+ 'items' => $items);
+}
-
-$module['nav'][] = array( 'title' => 'Fetchmail',
- 'open' => 1,
- 'items' => $items);
//**** Statistics menu
$items = array();
diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php
index 7311d61..46502ce 100644
--- a/interface/web/sites/lib/module.conf.php
+++ b/interface/web/sites/lib/module.conf.php
@@ -1,5 +1,7 @@
<?php
+$userid=$app->auth->get_user_id();
+
$module["name"] = "sites";
$module["title"] = "top_menu_sites";
$module["template"] = "module.tpl.htm";
@@ -9,112 +11,127 @@
/*
Websites menu
*/
+$items=array();
-$items[] = array( 'title' => "Website",
- 'target' => 'content',
- 'link' => 'sites/web_domain_list.php',
- 'html_id' => 'domain_list');
+if($app->auth->get_client_limit($userid,'web_domain') != 0)
+{
+ $items[] = array( 'title' => "Website",
+ 'target' => 'content',
+ 'link' => 'sites/web_domain_list.php',
+ 'html_id' => 'domain_list');
+}
+if($app->auth->get_client_limit($userid,'web_subdomain') != 0)
+{
+ $items[] = array( 'title' => "Subdomain",
+ 'target' => 'content',
+ 'link' => 'sites/web_subdomain_list.php',
+ 'html_id' => 'subdomain_list');
+}
-$items[] = array( 'title' => "Subdomain",
- 'target' => 'content',
- 'link' => 'sites/web_subdomain_list.php',
- 'html_id' => 'subdomain_list');
+if($app->auth->get_client_limit($userid,'web_aliasdomain') != 0)
+{
+ $items[] = array( 'title' => "Aliasdomain",
+ 'target' => 'content',
+ 'link' => 'sites/web_aliasdomain_list.php',
+ 'html_id' => 'aliasdomain_list');
+}
+if(count($items))
+{
+ $module["nav"][] = array( 'title' => 'Websites',
+ 'open' => 1,
+ 'items' => $items);
+}
-$items[] = array( 'title' => "Aliasdomain",
- 'target' => 'content',
- 'link' => 'sites/web_aliasdomain_list.php',
- 'html_id' => 'aliasdomain_list');
-
-$module["nav"][] = array( 'title' => 'Websites',
- 'open' => 1,
- 'items' => $items);
-
-// clean up
-unset($items);
/*
FTP User menu
*/
-
-$items[] = array( 'title' => "FTP-User",
- 'target' => 'content',
- 'link' => 'sites/ftp_user_list.php',
- 'html_id' => 'ftp_user_list');
-
-
-$module["nav"][] = array( 'title' => 'FTP',
- 'open' => 1,
- 'items' => $items);
-
-// clean up
-unset($items);
+if($app->auth->get_client_limit($userid,'ftp_user') != 0)
+{
+ $items=array();
+
+ $items[] = array( 'title' => "FTP-User",
+ 'target' => 'content',
+ 'link' => 'sites/ftp_user_list.php',
+ 'html_id' => 'ftp_user_list');
+
+
+ $module["nav"][] = array( 'title' => 'FTP',
+ 'open' => 1,
+ 'items' => $items);
+}
/*
- Shell User menu
+ FTP User menu
*/
-
-$items[] = array( 'title' => "Shell-User",
- 'target' => 'content',
- 'link' => 'sites/shell_user_list.php',
- 'html_id' => 'shell_user_list');
-
-
-$module["nav"][] = array( 'title' => 'Shell',
- 'open' => 1,
- 'items' => $items);
-
-// clean up
-unset($items);
-
-/*
- * Webdav User menu
- */
-$items[] = array( 'title' => "Webdav-User",
- 'target' => 'content',
- 'link' => 'sites/webdav_user_list.php',
- 'html_id' => 'webdav_user_list');
-
-
-$module["nav"][] = array( 'title' => 'Webdav',
- 'open' => 1,
- 'items' => $items);
-
-// clean up
-unset($items);
-
+if($app->auth->get_client_limit($userid,'shell_user') != 0)
+{
+ $items=array();
+
+ $items[] = array( 'title' => "Shell-User",
+ 'target' => 'content',
+ 'link' => 'sites/shell_user_list.php',
+ 'html_id' => 'shell_user_list');
+
+ $module["nav"][] = array( 'title' => 'Shell',
+ 'open' => 1,
+ 'items' => $items);
+}
/*
Databases menu
*/
+if($app->auth->get_client_limit($userid,'database') != 0)
+{
+ $items=array();
+
+ $items[] = array( 'title' => "Database",
+ 'target' => 'content',
+ 'link' => 'sites/database_list.php',
+ 'html_id' => 'database_list'
+ );
+
+ $module["nav"][] = array( 'title' => 'Database',
+ 'open' => 1,
+ 'items' => $items);
+}
-$items[] = array( 'title' => "Database",
- 'target' => 'content',
- 'link' => 'sites/database_list.php',
- 'html_id' => 'database_list');
-
-
-$module["nav"][] = array( 'title' => 'Database',
- 'open' => 1,
- 'items' => $items);
-
+/*
+ * Webdav User menu
+ */
+if($app->auth->get_client_limit($userid,'webdav_user') != 0)
+{
+ $items=array();
+
+ $items[] = array( 'title' => "Webdav-User",
+ 'target' => 'content',
+ 'link' => 'sites/webdav_user_list.php',
+ 'html_id' => 'webdav_user_list');
+
+
+ $module["nav"][] = array( 'title' => 'Webdav',
+ 'open' => 1,
+ 'items' => $items);
+}
/*
Cron menu
*/
-$items = array();
-
-$items[] = array( 'title' => "Cron Jobs",
- 'target' => 'content',
- 'link' => 'sites/cron_list.php',
- 'html_id' => 'cron_list');
-
-
-$module["nav"][] = array( 'title' => 'Cron',
- 'open' => 1,
- 'items' => $items);
-
+if($app->auth->get_client_limit($userid,'cron') != 0)
+{
+ $items = array();
+
+ $items[] = array( 'title' => "Cron Jobs",
+ 'target' => 'content',
+ 'link' => 'sites/cron_list.php',
+ 'html_id' => 'cron_list');
+
+ $module["nav"][] = array( 'title' => 'Cron',
+ 'open' => 1,
+ 'items' => $items);
+}
//**** Statistics menu
$items = array();
--
Gitblit v1.9.1