r4007 bugfix: recalc8021QPorts: added permission check to run this operation
authorAlexey Andriyanov <alan@al-an.info>
Fri, 19 Nov 2010 17:24:38 +0000 (17:24 +0000)
committerAlexey Andriyanov <alan@al-an.info>
Fri, 19 Nov 2010 17:24:38 +0000 (17:24 +0000)
inc/interface.php
inc/ophandlers.php

index 588a765..9d4c93e 100644 (file)
@@ -1842,6 +1842,7 @@ function showMessageOrError ()
                                189 => array ('code' => 'error', 'format' => "Unknown OID '%s'"),
                                190 => array ('code' => 'error', 'format' => "Invalid VLAN ID '%s'"),
                                191 => array ('code' => 'error', 'format' => "deploy was blocked due to conflicting configuration versions"),
+                               192 => array ('code' => 'error', 'format' => "Permission denied"),
 
 // records 200~299 with warnings
                                200 => array ('code' => 'warning', 'format' => '%s'),
@@ -7918,10 +7919,13 @@ function renderObject8021QPorts ($object_id)
                echo '<tr><td colspan=5 class=tdcenter><ul class="btns-8021q-sync">';
                echo '<li>' . getImageHREF ('SAVE', 'save configuration', TRUE, 100) . '</form></li>';
 
-               echo '<li>';
-               printOpFormIntro ('exec8021QRecalc');
-               echo getImageHREF ('RECALC', 'Recalculate uplinks and downlinks', TRUE, 101) .
-                       '</form></li></ul></td></tr>';
+               if (permitted (NULL, NULL, NULL, array (array ('tag' => '$op_recalc8021Q'))))
+               {
+                       echo '<li>';
+                       printOpFormIntro ('exec8021QRecalc');
+                       echo getImageHREF ('RECALC', 'Recalculate uplinks and downlinks', TRUE, 101) . '</form></li>';
+               }
+               echo '</ul></td></tr>';
        }
        echo '</table>';
        if ($req_port_name == '');
index c301aa8..3369c21 100644 (file)
@@ -2533,10 +2533,13 @@ function process8021QSyncRequest ()
 
 $msgcode['process8021QRecalcRequest']['CHANGED'] = 87;
 $msgcode['process8021QRecalcRequest']['NO_CHANGES'] = 300;
+$msgcode['process8021QRecalcRequest']['ERR'] = 192;
 function process8021QRecalcRequest ()
 {
        assertUIntArg ('object_id');
        global $sic;
+       if (! permitted (NULL, NULL, NULL, array (array ('tag' => '$op_recalc8021Q'))))
+               return buildRedirectURL (__FUNCTION__, 'ERR');
        $counters = recalc8021QPorts ($sic['object_id']);
        if ($counters['ports'])
                return buildRedirectURL (__FUNCTION__, 'CHANGED', array ($counters['ports'], $counters['switches']));