r1651 + rearrange checks in upgrade scripts into a more correct ones
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 1 Feb 2008 14:07:30 +0000 (14:07 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 1 Feb 2008 14:07:30 +0000 (14:07 +0000)
ChangeLog
upgrade.php

index e061dabafd28c49ca09eac53238633506e3cffec..87ea3d1d35298d33377b7d6d6193b05462469b50 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        bugfix: sticker reset icon did not work sometimes
        bugfix: don't fail rendering an empty rack row
        bugfix: rack operations were broken in 0.14.9
+       bugfix: upgrade script didn't authenticate users properly
        new feature: LDAP authentication
        new feature: borrow URL detection from Mantis BTS (suggested by Joakim Kasimir)
        new feature: Live PTR tab for DNS sync
index a326c04d910c34b244df15a61a985c9fad00c678..ba1254f8f215c46b7c19cb680d7c7e80f9ae8bc3 100644 (file)
@@ -717,11 +717,6 @@ catch (PDOException $e)
        die ("Database connection failed:\n\n" . $e->getMessage());
 }
 
-if (isset ($_SERVER['PHP_AUTH_USER']))
-       $_SERVER['PHP_AUTH_USER'] = escapeString ($_SERVER['PHP_AUTH_USER']);
-if (isset ($_SERVER['PHP_AUTH_PW']))
-       $_SERVER['PHP_AUTH_PW'] = escapeString ($_SERVER['PHP_AUTH_PW']);
-
 // Now we need to be sure that the current user is the administrator.
 // The rest doesn't matter within this context.
 // We still continue to use the current authenticator though, but this will
@@ -732,13 +727,20 @@ require_once 'inc/auth.php';
 // This will not fail sanely, because getUserAccounts() depends on showError()
 $accounts = getUserAccounts();
 
-// Auth prompt risk being a little broken here due to config cache absence.
-$configCache = array();
 // Only administrator is always authenticated locally, so reject others
 // for authenticate() to succeed.
-if ($accounts[$_SERVER['PHP_AUTH_USER']]['user_id'] != 1)
-       die ('You are not allowed to upgrade the database. Ask your RackTables administrator to do this.');
-authenticate();
+
+if
+(
+       !isset ($_SERVER['PHP_AUTH_USER']) or
+       !isset ($_SERVER['PHP_AUTH_PW']) or
+       $accounts[$_SERVER['PHP_AUTH_USER']]['user_id'] != 1 or
+       !authenticated_via_database (escapeString ($_SERVER['PHP_AUTH_USER']), escapeString ($_SERVER['PHP_AUTH_PW']))
+)
+{
+       showError ("Return to the main page and authenticate as administrator first to complete the upgrade.");
+       die;
+}
 
 $dbver = getDatabaseVersion();
 echo 'Code version == ' . CODE_VERSION;