Skip to content

Commit acdd201

Browse files
committed
FS#1262 - client menu depending on limits
1 parent 7abfaee commit acdd201

File tree

3 files changed

+222
-146
lines changed

3 files changed

+222
-146
lines changed

interface/lib/classes/auth.inc.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,20 @@
2929
*/
3030

3131
class auth {
32+
var $client_limits = null;
33+
34+
public function get_user_id()
35+
{
36+
return $_SESSION['s']['user']['userid'];
37+
}
3238

3339
public function is_admin() {
3440
if($_SESSION['s']['user']['typ'] == 'admin') {
3541
return true;
3642
} else {
3743
return false;
3844
}
39-
}
45+
}
4046

4147
public function has_clients($userid) {
4248
global $app, $conf;
@@ -69,6 +75,25 @@ public function add_group_to_user($userid,$groupid) {
6975
return false;
7076
}
7177
}
78+
79+
//** This function returns given client limit as integer, -1 means no limit
80+
public function get_client_limit($userid, $limitname)
81+
{
82+
global $app;
83+
84+
// simple query cache
85+
if($this->client_limits===null)
86+
$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");
87+
88+
// isn't client -> no limit
89+
if(!$this->client_limits)
90+
return -1;
91+
92+
if(isset($this->client_limits['limit_'.$limitname]))
93+
return $this->client_limits['limit_'.$limitname];
94+
else
95+
trigger_error('Wrong limit identifier');
96+
}
7297

7398
//** This function removes a given group id from a given user.
7499
public function remove_group_from_user($userid,$groupid) {
@@ -99,8 +124,7 @@ public function check_module_permissions($module) {
99124
exit;
100125
}
101126
}
102-
103-
127+
104128
}
105129

106130
?>

interface/web/mail/lib/module.conf.php

Lines changed: 89 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?php
22

3+
$userid=$app->auth->get_user_id();
4+
35
$module['name'] = 'mail';
46
$module['title'] = 'top_menu_email';
57
$module['template'] = 'module.tpl.htm';
@@ -10,60 +12,86 @@
1012
//**** Email accounts menu
1113
$items = array();
1214

13-
$items[] = array( 'title' => 'Domain',
14-
'target' => 'content',
15-
'link' => 'mail/mail_domain_list.php',
16-
'html_id' => 'mail_domain_list');
17-
18-
$items[] = array( 'title' => 'Domain Alias',
19-
'target' => 'content',
20-
'link' => 'mail/mail_aliasdomain_list.php',
21-
'html_id' => 'mail_aliasdomain_list');
15+
if($app->auth->get_client_limit($userid,'maildomain') != 0)
16+
{
17+
$items[] = array( 'title' => 'Domain',
18+
'target' => 'content',
19+
'link' => 'mail/mail_domain_list.php',
20+
'html_id' => 'mail_domain_list');
21+
}
22+
23+
if($app->auth->get_client_limit($userid,'mailaliasdomain') != 0)
24+
{
25+
$items[] = array( 'title' => 'Domain Alias',
26+
'target' => 'content',
27+
'link' => 'mail/mail_aliasdomain_list.php',
28+
'html_id' => 'mail_aliasdomain_list');
29+
}
2230

23-
$items[] = array( 'title' => 'Email Mailbox',
24-
'target' => 'content',
25-
'link' => 'mail/mail_user_list.php',
26-
'html_id' => 'mail_user_list');
31+
if($app->auth->get_client_limit($userid,'mailbox') != 0)
32+
{
33+
$items[] = array( 'title' => 'Email Mailbox',
34+
'target' => 'content',
35+
'link' => 'mail/mail_user_list.php',
36+
'html_id' => 'mail_user_list');
37+
}
2738

28-
$items[] = array( 'title' => 'Email Alias',
29-
'target' => 'content',
30-
'link' => 'mail/mail_alias_list.php',
31-
'html_id' => 'mail_alias_list');
39+
if($app->auth->get_client_limit($userid,'mailalias') != 0)
40+
{
41+
$items[] = array( 'title' => 'Email Alias',
42+
'target' => 'content',
43+
'link' => 'mail/mail_alias_list.php',
44+
'html_id' => 'mail_alias_list');
45+
}
3246

33-
$items[] = array( 'title' => 'Email Forward',
34-
'target' => 'content',
35-
'link' => 'mail/mail_forward_list.php',
36-
'html_id' => 'mail_forward_list');
47+
if($app->auth->get_client_limit($userid,'mailforward') != 0)
48+
{
49+
$items[] = array( 'title' => 'Email Forward',
50+
'target' => 'content',
51+
'link' => 'mail/mail_forward_list.php',
52+
'html_id' => 'mail_forward_list');
53+
}
3754

38-
$items[] = array( 'title' => 'Email Catchall',
39-
'target' => 'content',
40-
'link' => 'mail/mail_domain_catchall_list.php',
41-
'html_id' => 'mail_domain_catchall_list');
55+
if($app->auth->get_client_limit($userid,'mailcatchall') != 0)
56+
{
57+
$items[] = array( 'title' => 'Email Catchall',
58+
'target' => 'content',
59+
'link' => 'mail/mail_domain_catchall_list.php',
60+
'html_id' => 'mail_domain_catchall_list');
61+
}
4262

43-
$items[] = array( 'title' => 'Email Routing',
44-
'target' => 'content',
45-
'link' => 'mail/mail_transport_list.php',
46-
'html_id' => 'mail_transport_list');
63+
if($app->auth->get_client_limit($userid,'mailrouting') != 0)
64+
{
65+
$items[] = array( 'title' => 'Email Routing',
66+
'target' => 'content',
67+
'link' => 'mail/mail_transport_list.php',
68+
'html_id' => 'mail_transport_list');
69+
}
4770

48-
$module['nav'][] = array( 'title' => 'Email Accounts',
49-
'open' => 1,
50-
'items' => $items);
71+
if(count($items))
72+
{
73+
$module['nav'][] = array( 'title' => 'Email Accounts',
74+
'open' => 1,
75+
'items' => $items);
76+
}
5177

5278
//**** Spamfilter menu
5379
$items = array();
5480

55-
$items[] = array( 'title' => 'Whitelist',
56-
'target' => 'content',
57-
'link' => 'mail/spamfilter_whitelist_list.php',
58-
'html_id' => 'spamfilter_whitelist_list');
59-
60-
61-
$items[] = array( 'title' => 'Blacklist',
62-
'target' => 'content',
63-
'link' => 'mail/spamfilter_blacklist_list.php',
64-
'html_id' => 'spamfilter_blacklist_list');
81+
if($app->auth->get_client_limit($userid,'spamfilter_wblist') != 0)
82+
{
83+
$items[] = array( 'title' => 'Whitelist',
84+
'target' => 'content',
85+
'link' => 'mail/spamfilter_whitelist_list.php',
86+
'html_id' => 'spamfilter_whitelist_list');
87+
88+
$items[] = array( 'title' => 'Blacklist',
89+
'target' => 'content',
90+
'link' => 'mail/spamfilter_blacklist_list.php',
91+
'html_id' => 'spamfilter_blacklist_list');
92+
}
6593

66-
if($_SESSION['s']['user']['typ'] == 'admin') {
94+
if($app->auth->is_admin()) {
6795

6896
$items[] = array( 'title' => 'User / Domain',
6997
'target' => 'content',
@@ -79,23 +107,30 @@
79107
// 'target' => 'content',
80108
// 'link' => 'mail/spamfilter_config_list.php');
81109
}
82-
$module['nav'][] = array( 'title' => 'Spamfilter',
83-
'open' => 1,
84-
'items' => $items);
110+
111+
if(count($items))
112+
{
113+
$module['nav'][] = array( 'title' => 'Spamfilter',
114+
'open' => 1,
115+
'items' => $items);
116+
}
85117

86118
//**** Fetchmail menu
87119
$items = array();
88120

89-
$items[] = array( 'title' => 'Fetchmail',
90-
'target' => 'content',
91-
'link' => 'mail/mail_get_list.php',
92-
'html_id' => 'mail_get_list');
93-
121+
if($app->auth->get_client_limit($userid,'fetchmail') != 0)
122+
{
123+
$items[] = array( 'title' => 'Fetchmail',
124+
'target' => 'content',
125+
'link' => 'mail/mail_get_list.php',
126+
'html_id' => 'mail_get_list');
127+
128+
$module['nav'][] = array( 'title' => 'Fetchmail',
129+
'open' => 1,
130+
'items' => $items);
131+
}
94132

95133

96-
$module['nav'][] = array( 'title' => 'Fetchmail',
97-
'open' => 1,
98-
'items' => $items);
99134

100135
//**** Statistics menu
101136
$items = array();

0 commit comments

Comments
 (0)