added support for allowed_ips list edit

2.0@2434
Daniel Tiefnig 17 years ago
parent f665f35c85
commit 1dbbab4a41

@ -907,6 +907,115 @@ sub do_edit_list : Local {
}
sub edit_iplist : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_edit_iplist.tt';
my %messages;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
my $preferences;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$preferences
);
my $list = $c->request->params->{list_name};
if(defined $$preferences{$list}) {
my $iplist = ref $$preferences{$list} ? $$preferences{$list} : [ $$preferences{$list} ];
my $bg = '';
my $i = 1;
foreach my $entry (sort @$iplist) {
push @{$c->stash->{list_data}}, { ipnet => $entry,
background => $bg ? '' : 'tr_alt',
id => $i++,
};
$bg = !$bg;
}
}
$c->stash->{subscriber} = $c->session->{subscriber};
$c->stash->{subscriber_id} = $subscriber_id;
$c->stash->{list_name} = $list;
if(defined $c->session->{listaddtxt}) {
$c->stash->{listaddtxt} = $c->session->{listaddtxt};
delete $c->session->{listaddtxt};
}
return 1;
}
sub do_edit_iplist : Local {
my ( $self, $c ) = @_;
my %messages;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_byid',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
my $preferences;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$preferences
);
my $list = $c->request->params->{list_name};
# input text field to add new entry to IP list
my $add = $c->request->params->{list_add};
if(defined $add) {
my $checkresult;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_ipnet', $add, \$checkresult);
if($checkresult) {
my $iplist = $$preferences{$list};
$iplist = [] unless defined $iplist;
$iplist = [ $iplist ] unless ref $iplist;
$$preferences{$list} = [ @$iplist, $add ];
} else {
$messages{msgadd} = 'Client.Syntax.MalformedIPNet';
$c->session->{listaddtxt} = $add;
}
}
# delete link next to entries in IP list
my $del = $c->request->params->{list_del};
if(defined $del) {
my $iplist = $$preferences{$list};
if(defined $iplist) {
$iplist = [ $iplist ] unless ref $iplist;
$$preferences{$list} = [ grep { $_ ne $del } @$iplist ];
}
}
unless(keys %messages) {
$c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
preferences => {
$list => $$preferences{$list},
},
},
undef
);
} else {
$messages{numerr} = 'Client.Voip.InputErrorFound';
}
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_iplist?subscriber_id=$subscriber_id&list_name=$list");
}
sub edit_speed_dial_slots : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/speed_dial_list.tt';

@ -334,8 +334,13 @@
[% END %]
[% IF ! edit_preferences && ! Catalyst.session.admin.read_only %]
 
<a href="edit_list?subscriber_id=[% subscriber.subscriber_id %]&amp;list_name=[% preference.key %]"
class="aaction">edit list</a>
[% IF preference.key == "allowed_ips" %]
<a href="edit_iplist?subscriber_id=[% subscriber.subscriber_id %]&amp;list_name=[% preference.key %]"
class="aaction">edit list</a>
[% ELSE %]
<a href="edit_list?subscriber_id=[% subscriber.subscriber_id %]&amp;list_name=[% preference.key %]"
class="aaction">edit list</a>
[% END %]
[% END %]
</td>
</tr>

@ -0,0 +1,48 @@
<h3>Edit [% list_name %] for
<a class="noarrow" href="detail?subscriber_id=[% subscriber_id %]">
[% subscriber.username %]@[% subscriber.domain %]</a>
</h3>
<div class="actions">
<a href="detail?subscriber_id=[% subscriber_id %]&amp;#userprefs" class="aaction">back</a>
</div>
<div class="p1">
<div class="list_explanation">
The subscriber is limited to the following list of IP addresses. An empty list does not limit the subscriber at all.
</div>
<table>
[% FOREACH listentry = list_data %]
<tr class="[% listentry.background %]">
<td> [% listentry.ipnet %] </td>
<form action="do_edit_iplist" method="post">
<td >
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<input type="hidden" name="list_del" value="[% listentry.ipnet %]" />
<div class="postlink">
<label for="listdel[% listentry.id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="listdel[% listentry.id %]" />
</div>
</td>
</form>
</tr>
[% END %]
</table>
<br />
<form action="/subscriber/do_edit_iplist" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<label for="listaddtxt">New entry:</label><br />
<div class="postlink">
<input type="text" size="20" name="list_add" id="listaddtxt" value="[% listaddtxt %]" /> &nbsp;
<label for="listadd">Add entry</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="listadd" />
[% IF messages.msgadd %]<div class="errormsg">[% messages.msgadd %]</div>[% END %]
</div><br clear="all" />
</form>
</div>
Loading…
Cancel
Save