mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-08-05 14:40:44 -04:00
Provide a way for non-admins to authenticate and use the upgrader,
without using our regular code paths. Signed-off-by: <unostar@danalan.info>
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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: <?= $done ? "0.5" : "1" ?>;
|
||||
}
|
||||
pre {
|
||||
display: inline;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="outer">
|
||||
<img src="<?= url::file("modules/gallery/images/gallery.png") ?>" />
|
||||
<div id="inner">
|
||||
<? if ($can_upgrade): ?>
|
||||
<? if ($done): ?>
|
||||
<div id="confirmation">
|
||||
<div>
|
||||
@@ -158,6 +167,13 @@
|
||||
<? endforeach ?>
|
||||
</p>
|
||||
<? endif ?>
|
||||
<? else: // can_upgrade ?>
|
||||
<h1> <?= t("Who are you?") ?> </h1>
|
||||
<p>
|
||||
<?= t("You're not logged in as an administrator, so we have to verify you to make sure it's ok for you to do an upgrade. To prove you can run an upgrade, create a file called %name in your <b>gallery3/var/tmp</b> directory.", array("name" => "<br/><b>$upgrade_token</b>")) ?>
|
||||
</p>
|
||||
<a href="<?= url::site("upgrader?") ?>"><?= t("Ok, I've done that") ?></a>
|
||||
<? endif // can_upgrade ?>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<p>
|
||||
|
||||
Reference in New Issue
Block a user