mirror of https://github.com/sipwise/www_admin.git
201 lines
5.4 KiB
201 lines
5.4 KiB
package admin::Controller::admin;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use base 'Catalyst::Controller';
|
|
|
|
=head1 NAME
|
|
|
|
admin::Controller::admin - Catalyst Controller
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Catalyst Controller.
|
|
|
|
=head1 METHODS
|
|
|
|
=head2 index
|
|
|
|
Display admin list.
|
|
|
|
=cut
|
|
|
|
sub index : Private {
|
|
my ( $self, $c ) = @_;
|
|
$c->stash->{template} = 'tt/admin.tt';
|
|
|
|
if($c->session->{admin}{is_master} or $c->session->{admin}{is_superuser}) {
|
|
my $admins;
|
|
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_admins',
|
|
undef,
|
|
\$admins
|
|
);
|
|
$c->stash->{admins} = $$admins{result};
|
|
} else { # only own settings
|
|
my $admin;
|
|
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_admin',
|
|
{ login => $c->session->{admin}{login} },
|
|
\$admin
|
|
);
|
|
$c->stash->{admins} = [ $admin ];
|
|
}
|
|
|
|
$c->stash->{edit_admin} = $c->request->params->{edit_admin};
|
|
|
|
if(ref $c->session->{restore_admedit_input} eq 'HASH') {
|
|
$c->stash->{erefill} = $c->session->{restore_admedit_input};
|
|
delete $c->session->{restore_admedit_input};
|
|
}
|
|
if(ref $c->session->{restore_admadd_input} eq 'HASH') {
|
|
$c->stash->{arefill} = $c->session->{restore_admadd_input};
|
|
delete $c->session->{restore_admadd_input};
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
=head2 do_edit_admin
|
|
|
|
Change settings for an admin.
|
|
|
|
=cut
|
|
|
|
sub do_edit_admin : Local {
|
|
my ( $self, $c ) = @_;
|
|
|
|
my %messages;
|
|
my %settings;
|
|
|
|
my $admin = $c->request->params->{admin};
|
|
|
|
$settings{password} = $c->request->params->{password};
|
|
if(defined $settings{password} and length $settings{password}) {
|
|
$messages{epass} = 'Client.Voip.PassLength'
|
|
unless length $settings{password} >= 6;
|
|
} else {
|
|
delete $settings{password};
|
|
}
|
|
|
|
$settings{is_master} = $c->request->params->{is_master} ? 1 : 0;
|
|
$settings{is_active} = $c->request->params->{is_active} ? 1 : 0;
|
|
|
|
unless(keys %messages) {
|
|
if($c->model('Provisioning')->call_prov( $c, 'billing', 'update_admin',
|
|
{ login => $admin,
|
|
data => \%settings,
|
|
},
|
|
undef
|
|
))
|
|
{
|
|
$messages{eadmmsg} = 'Server.Voip.SavedSettings';
|
|
$c->session->{messages} = \%messages;
|
|
$c->response->redirect("/admin");
|
|
return;
|
|
}
|
|
} else {
|
|
$messages{eadmerr} = 'Client.Voip.InputErrorFound';
|
|
}
|
|
|
|
$c->session->{messages} = \%messages;
|
|
$c->session->{restore_admedit_input} = \%settings;
|
|
$c->response->redirect("/admin?edit_admin=$admin");
|
|
return;
|
|
}
|
|
|
|
=head2 do_create_admin
|
|
|
|
Create a new admin.
|
|
|
|
=cut
|
|
|
|
sub do_create_admin : Local {
|
|
my ( $self, $c ) = @_;
|
|
|
|
my %messages;
|
|
my %settings;
|
|
|
|
my $admin = $c->request->params->{admin};
|
|
$messages{alogin} = 'Client.Syntax.MalformedLogin'
|
|
unless $admin =~ /^\w+$/;
|
|
|
|
$settings{password} = $c->request->params->{password};
|
|
$messages{apass} = 'Client.Voip.PassLength'
|
|
unless length $settings{password} >= 6;
|
|
|
|
$settings{is_master} = $c->request->params->{is_master} ? 1 : 0;
|
|
$settings{is_active} = $c->request->params->{is_active} ? 1 : 0;
|
|
|
|
unless(keys %messages) {
|
|
if($c->model('Provisioning')->call_prov( $c, 'billing', 'create_admin',
|
|
{ login => $admin,
|
|
data => \%settings,
|
|
},
|
|
undef
|
|
))
|
|
{
|
|
$messages{cadmmsg} = 'Web.Admin.Created';
|
|
$c->session->{messages} = \%messages;
|
|
$c->response->redirect("/admin");
|
|
return;
|
|
}
|
|
} else {
|
|
$messages{cadmerr} = 'Client.Voip.InputErrorFound';
|
|
}
|
|
|
|
$c->session->{messages} = \%messages;
|
|
$c->session->{restore_admadd_input} = \%settings;
|
|
$c->session->{restore_admadd_input}{admin} = $admin;
|
|
$c->response->redirect("/admin");
|
|
return;
|
|
}
|
|
|
|
=head2 do_delete_admin
|
|
|
|
Delete a admin.
|
|
|
|
=cut
|
|
|
|
sub do_delete_admin : Local {
|
|
my ( $self, $c ) = @_;
|
|
|
|
my $admin = $c->request->params->{admin};
|
|
if($c->model('Provisioning')->call_prov( $c, 'billing', 'delete_admin',
|
|
{ login => $admin },
|
|
undef
|
|
))
|
|
{
|
|
$c->session->{messages}{eadmmsg} = 'Web.Admin.Deleted';
|
|
$c->response->redirect("/admin");
|
|
return;
|
|
}
|
|
|
|
$c->response->redirect("/admin");
|
|
return;
|
|
}
|
|
|
|
=head1 BUGS AND LIMITATIONS
|
|
|
|
=over
|
|
|
|
=item currently none
|
|
|
|
=back
|
|
|
|
=head1 SEE ALSO
|
|
|
|
Provisioning model, Sipwise::Provisioning::Billing, Catalyst
|
|
|
|
=head1 AUTHORS
|
|
|
|
Daniel Tiefnig <dtiefnig@sipwise.com>
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
The admin controller is Copyright (c) 2007 Sipwise GmbH, Austria. All
|
|
rights reserved.
|
|
|
|
=cut
|
|
|
|
# ende gelaende
|
|
1;
|