| 
      
      
      From: <te...@us...> - 2013-05-28 03:51:52
      
     | 
| Revision: 5991
          http://sourceforge.net/p/web-erp/reponame/5991
Author:   tehonu
Date:     2013-05-28 03:51:49 +0000 (Tue, 28 May 2013)
Log Message:
-----------
PakRicard: Allow DB_maintenance be set to -1 ==> system will allow login only to SysAdmin users (15). Other users will receive message "system under maintenance"
Modified Paths:
--------------
    trunk/SystemParameters.php
    trunk/api/api_login.php
    trunk/includes/UserLogin.php
    trunk/includes/session.inc
Modified: trunk/SystemParameters.php
===================================================================
--- trunk/SystemParameters.php	2013-05-28 02:35:48 UTC (rev 5990)
+++ trunk/SystemParameters.php	2013-05-28 03:51:49 UTC (rev 5991)
@@ -862,6 +862,11 @@
 	} else {
 		echo '<option value="0">'._('Never') . '</option>';
 	}
+	if ($_SESSION['DB_Maintenance']=='-1'){
+		echo '<option selected="selected" value="-1">'._('Allow SysAdmin Access Only') . '</option>';
+	} else {
+		echo '<option value="-1">'._('Allow SysAdmin Access Only') . '</option>';
+	}
 
 	echo '</select></td>
 	<td>' . _('Uses the function DB_Maintenance defined in ConnectDB_XXXX.inc to perform database maintenance tasks, to run at regular intervals - checked at each and every user login') . '</td>
Modified: trunk/api/api_login.php
===================================================================
--- trunk/api/api_login.php	2013-05-28 02:35:48 UTC (rev 5990)
+++ trunk/api/api_login.php	2013-05-28 03:51:49 UTC (rev 5991)
@@ -108,7 +108,7 @@
 
     $db = $_SESSION['db'];	    // Used a bit in the following.
     if(isset($_SESSION['DB_Maintenance'])){
-	    if ($_SESSION['DB_Maintenance']!=0)  {
+	    if ($_SESSION['DB_Maintenance']>0)  {
 		    if (DateDiff(Date($_SESSION['DefaultDateFormat']),
 				    ConvertSQLDate($_SESSION['DB_Maintenance_LastRun'])
 				    ,'d')	> 	$_SESSION['DB_Maintenance']){
Modified: trunk/includes/UserLogin.php
===================================================================
--- trunk/includes/UserLogin.php	2013-05-28 02:35:48 UTC (rev 5990)
+++ trunk/includes/UserLogin.php	2013-05-28 03:51:49 UTC (rev 5991)
@@ -93,12 +93,28 @@
 				return  UL_CONFIGERR;
 			} else {
 				$i=0;
+				$UserIsSysAdmin = FALSE;
 				while ($myrow = DB_fetch_row($Sec_Result)){
+					if ($myrow[0] == 15){
+						$UserIsSysAdmin = TRUE;
+					}
 					$_SESSION['AllowedPageSecurityTokens'][$i] = $myrow[0];
 					$i++;
 				}
 			}
-			//  Temporary shift - disable log messages - how temporary?
+			// check if only maintenance users can access webERP
+			$sql = "SELECT confvalue FROM config WHERE confname = 'DB_Maintenance'";
+			$Maintenance_Result = DB_query($sql, $db);
+			if (DB_num_rows($Maintenance_Result)==0){
+				return  UL_CONFIGERR;
+			} else {
+				$myMaintenanceRow = DB_fetch_row($Maintenance_Result);
+				if (($myMaintenanceRow[0] == -1) AND ($UserIsSysAdmin == FALSE)){
+					// the configuration setting has been set to -1 ==> Allow SysAdmin Access Only
+					// the user is NOT a SysAdmin 
+					return  UL_MAINTENANCE;
+				}
+			}
 		} else {     // Incorrect password
 			// 5 login attempts, show failed login screen
 			if (!isset($_SESSION['AttemptsCounter'])) {
Modified: trunk/includes/session.inc
===================================================================
--- trunk/includes/session.inc	2013-05-28 02:35:48 UTC (rev 5990)
+++ trunk/includes/session.inc	2013-05-28 03:51:49 UTC (rev 5991)
@@ -144,7 +144,7 @@
 }
 
 if(isset($_SESSION['DB_Maintenance'])){
-	if ($_SESSION['DB_Maintenance']!=0)  {
+	if ($_SESSION['DB_Maintenance']>0)  {
 		if (DateDiff(Date($_SESSION['DefaultDateFormat']),
 				ConvertSQLDate($_SESSION['DB_Maintenance_LastRun'])
 				,'d')	>= 	$_SESSION['DB_Maintenance']){
 |