From 5f2dca7a51f246d03496f4cea0dcc795bbe2023a Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 11 Jun 2009 12:05:24 +0800 Subject: Provide a way for non-admins to authenticate and use the upgrader, without using our regular code paths. Signed-off-by: --- modules/gallery/controllers/upgrader.php | 19 ++++++++++++++----- modules/gallery/views/upgrader.html.php | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) (limited to 'modules') diff --git a/modules/gallery/controllers/upgrader.php b/modules/gallery/controllers/upgrader.php index 0833e253..5eb96fdd 100644 --- a/modules/gallery/controllers/upgrader.php +++ b/modules/gallery/controllers/upgrader.php @@ -19,24 +19,33 @@ */ class Upgrader_Controller extends Controller { public function index() { - // Todo: give the admin a chance to log in here - if (!user::active()->admin) { - access::forbidden(); + $session = Session::instance(); + + // Make sure we have an upgrade token + if (!($upgrade_token = $session->get("upgrade_token", null))) { + $session->set("upgrade_token", $upgrade_token = md5(rand())); + } + + // If the upgrade token exists, then bless this session + if (file_exists(TMPPATH . $upgrade_token)) { + $session->set("can_upgrade", true); + @unlink(TMPPATH . $upgrade_token); } $view = new View("upgrader.html"); + $view->can_upgrade = user::active()->admin || $session->get("can_upgrade"); + $view->upgrade_token = $upgrade_token; $view->available = module::available(); $view->done = Input::instance()->get("done"); print $view; } public function upgrade() { - // Todo: give the admin a chance to log in here if (php_sapi_name() == "cli") { // @todo this may screw up some module installers, but we don't have a better answer at // this time. $_SERVER["HTTP_HOST"] = "example.com"; - } else if (!user::active()->admin) { + } else if (!user::active()->admin && !Session::instance()->get("can_upgrade", false)) { access::forbidden(); } diff --git a/modules/gallery/views/upgrader.html.php b/modules/gallery/views/upgrader.html.php index 6b9a0110..fa21e196 100644 --- a/modules/gallery/views/upgrader.html.php +++ b/modules/gallery/views/upgrader.html.php @@ -9,6 +9,9 @@ font-family: Trebuchet MS; font-size: 1.1em; } + h1 { + font-size: 1.4em; + } div#outer { width: 650px; background: white; @@ -93,11 +96,17 @@ .gray_on_done { opacity: ; } + pre { + display: inline; + margin: 0px; + padding: 0px; + }
" />
+
@@ -158,6 +167,13 @@

+ +

+

+ gallery3/var/tmp directory.", array("name" => "
$upgrade_token")) ?> +

+ "> +