Site admin priviledges available only for first registered company admins.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Sat, 26 Jul 2008 07:20:58 +0000 (07:20 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Sat, 26 Jul 2008 07:20:58 +0000 (07:20 +0000)
admin/create_coy.php
admin/inst_lang.php
admin/inst_module.php
config.php
includes/current_user.inc

index a7cae00ce4cc3ec19a1587e5acc9b3b05eea1d35..b40b41d772501239f63b4bd3f56c5b1ab14c7663 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-$page_security = 15;
+$page_security = 20;
 $path_to_root="..";
 include_once($path_to_root . "/includes/session.inc");
 
@@ -29,13 +29,14 @@ else
 
 function check_data()
 {
-       global $db_connections, $tb_pref_counter;
+       global $db_connections, $tb_pref_counter, $selected_id;
 
        if ($_POST['name'] == "" || $_POST['host'] == "" || $_POST['dbuser'] == "" || $_POST['dbname'] == "")
                return false;
        foreach($db_connections as $id=>$con)
        {
-               if ($_POST['host'] == $con['host'] && $_POST['dbname'] == $con['dbname'])
+        if($id != $selected_id && $_POST['host'] == $con['host'] 
+               && $_POST['dbname'] == $con['dbname'])
                {
                        if ($_POST['tbpref'] == $con['tbpref'])
                        {
@@ -232,8 +233,8 @@ function display_companies()
                label_cell($conn[$i]['tbpref']);
                label_cell($what);
                label_cell("<a href=" . $_SERVER['PHP_SELF']. "?selected_id=" . $i . ">" . _("Edit") . "</a>");
-               if ($i != $coyno)
-                       label_cell("<a href='javascript:deleteCompany(" . $i . ")'>" . _("Delete") . "</a>");
+               label_cell( $i == $coyno ? '' :
+       "<a href='javascript:deleteCompany(" . $i . ")'>" . _("Delete") . "</a>");
                end_row();
        }
 
index d024970fe64db899f5ad9bf7a3be11992777aa13..98776618fb59dfbcdde68fdb920636a58188c3d0 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-$page_security = 15;
+$page_security = 20;
 $path_to_root="..";
 include_once($path_to_root . "/includes/session.inc");
 
index 2dfde4b9bd5805e6e8696a182696c476c59c682f..d0d8a366069a21b1bad6e61d7d7e5c1a071985d5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-$page_security = 15;
+$page_security = 20;
 $path_to_root="..";
 include_once($path_to_root . "/includes/session.inc");
 
index a860cf8289e3ad8e7130327db74c1b71ee671c89..86817e45787f892b77e5651ee7dfeb2a321c4228 100644 (file)
@@ -126,13 +126,17 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
        If the security setting of the page is contained in the security group as determined by the access level then the user will be allowed access.
        Each page has a $page_security = x; variable
        This value is compared to contents of the array applicable which is based on the access level of the user.
-       Access authorisation is checked in header.inc this is where _SESSION["AccessLevel"] is the index of the security_groups array. If you wish to add more security groups with then you must add a new SecurityHeading to the security_headings array
-       and a new array of Security categories to the Security Groups array
+       Access authorisation is checked in session.inc. If you wish to add more security groups 
+       with then you must add a new SecurityHeading to the security_headings array
+       and a new array of Security categories to the Security Groups _at_the_end_ of the array
        This mechanism allows more fine grained control of access
        security_groups is an array of arrays
        The index is the order in which the array of allowed pages is defined new ones can be defined at will
        or by changing the numbers in each array the security access can be tailored. These numbers need to read
        in conjunction with the Page Security index
+       Special case is security level 20 which is reserved for admins of first
+       registered company (site admins). All potentially dangerous for whole FA 
+       site operations like installing addon modules require access level 20.
        */
 
        $security_headings = array(
@@ -144,7 +148,7 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
        $security_groups = array(
                        array(1,2),
                        array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,16),
-                       array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),
+                       array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20),
        );
 
        /*
index 14faa3498b4aaf2ad854cdce9efdfa1bb029d47a..7a9f17636eaae904dfe0fa255e12d5918606e7db 100644 (file)
@@ -72,7 +72,9 @@ class current_user
        function can_access_page($page_level)
        {
                global $security_groups;
-               return isset($page_level) && in_array($page_level, $security_groups[$this->access]);
+               // first registered company has site admin privileges
+               return isset($page_level) && in_array($page_level, $security_groups[$this->access])
+                       && ($this->company == 0 || $page_level != 20); 
        }
 
        function get_db_connection()