page: ignore failed user setup during errors
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 30 Nov 2020 21:43:11 +0000 (22:43 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 5 Dec 2020 00:38:53 +0000 (01:38 +0100)
Report auth.inc.php exceptions without breaking on attempted usage of
$User->login in output, or missing ArchiveArticle class.

page.inc.php
page.php

index 94ef7cfb0dbf48aed0b6e97b99afd7c931b7f1ce..120fb957c2ea35b8f7ab07f56344370128823815 100644 (file)
@@ -7,7 +7,7 @@ print "<header>\n";
 ob_start();
 include 'menu.inc.html';
 ob_start();
-if ($User and $User->login) {
+if ($User and property_exists($User, 'login') and $User->login) {
        print '<div class="login"><p>';
        printf('<span>Ingelogd: <b><a href="%s">%s</a></b></span>', '/login', $User->login);
        if ($User->admin("edit $Page$Args")) {
index bb2de0b75f9ddddffb51d37749e575286941d235..ed0ec1b9af93772e0b9cbbbc15e1721846ad9ffe 100644 (file)
--- a/page.php
+++ b/page.php
@@ -54,7 +54,7 @@ function getoutput($blocks = [])
 
        # keep either login or logout parts depending on user level
        global $User;
-       $hideclass = $User && $User->login ? 'logout' : 'login';
+       $hideclass = $User && property_exists($User, 'login') && $User->login ? 'logout' : 'login';
        $doc = preg_replace('{\s*<([a-z]+) class="'.$hideclass.'">.*?</\1>}s', '', $doc);
 
        return preg_replace_callback(
@@ -86,6 +86,7 @@ function fail($error)
        global $User, $Page, $Args;
        http_response_code(500);
        if (!isset($Article)) {
+               require_once('article.inc.php');
                $Article = new ArchiveArticle(NULL);
                $Article->title = 'Fout';
        }