From a8ec4d0ef4ad9c7a71718eb1fa74c215c3ac0b87 Mon Sep 17 00:00:00 2001 From: Daniel Tiefnig Date: Fri, 25 Apr 2008 14:41:52 +0000 Subject: [PATCH] ported r747 from trunk: fixed own-password-change errors for admins --- lib/admin/Controller/admin.pm | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/admin/Controller/admin.pm b/lib/admin/Controller/admin.pm index fe65255..cd8aa10 100644 --- a/lib/admin/Controller/admin.pm +++ b/lib/admin/Controller/admin.pm @@ -76,19 +76,29 @@ sub do_edit_admin : Local { delete $settings{password}; } - $settings{is_master} = $c->request->params->{is_master} ? 1 : 0; - $settings{is_active} = $c->request->params->{is_active} ? 1 : 0; + $settings{is_master} = $c->request->params->{is_master} ? 1 : 0 + unless $admin eq $c->session->{admin}{login}; + $settings{is_active} = $c->request->params->{is_active} ? 1 : 0 + unless $admin eq $c->session->{admin}{login}; 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; + if(keys %settings) { + if($c->model('Provisioning')->call_prov( $c, 'billing', 'update_admin', + { login => $admin, + data => { %settings }, + }, + undef + )) + { + $c->session->{admin}{password} = $settings{password} + if exists $settings{password} and $admin eq $c->session->{admin}{login}; + $messages{eadmmsg} = 'Server.Voip.SavedSettings'; + $c->session->{messages} = \%messages; + $c->response->redirect("/admin"); + return; + } + } else { + # emit error? $c->response->redirect("/admin"); return; }