edit/page: empty target argument for index
[minimedit.git] / edit / page / index.php
index cd222163a5a3615a7ad39193a0bcf218e471ae56..910b7c9bfacb2051b893916a5f6422c17eda1d2f 100644 (file)
@@ -1,7 +1,5 @@
 <?php
-ob_clean();
-
-if (empty($User['admin']))
+if (!$User->admin("edit $Page$Args"))
        abort("geen beheersrechten", '401 unauthorised');
 
 if ($_FILES) {
@@ -44,12 +42,13 @@ if ($_FILES) {
 
 if (!$_POST)
        abort("niets te doen", '405 post error');
-if (!$Args)
-       abort("geen bestand aangeleverd", '409 input error');
 
-$filename = ltrim($Args, '/').'.html';
+$filename = trim($Args, '/') ?: 'index';
 if (preg_match('{^\.}', $filename))
        abort("ongeldige bestandsnaam: $filename", '403 input error');
+if (is_dir($filename) && !file_exists("$filename.html"))
+       $filename .= '/index';
+$filename .= '.html';
 if (file_exists($filename) and !is_writable($filename))
        abort("onwijzigbaar bestand: $filename", '403 input error');
 
@@ -74,8 +73,8 @@ if (!file_put_contents($filename, $upload))
 if (is_writable('../.git')) {
        $gitmsg = preg_replace('/\.html$/', '', $filename).": edit from {$_SERVER['REMOTE_ADDR']}";
        $gitcmd = 'git';
-       $gitcmd .= ' -c user.name='.escapeshellarg($User['name']);
-       $gitcmd .= ' -c user.email='.escapeshellarg("{$User['name']}@lijtweg.nl");
+       $gitcmd .= ' -c user.name='.escapeshellarg($User->name ?: $User->login);
+       $gitcmd .= ' -c user.email='.escapeshellarg($User->email ?: "{$User->login}@lijtweg.nl");
        $gitcmd .= ' commit -q';
        $gitcmd .= ' -m '.escapeshellarg($gitmsg);
        $gitcmd .= ' -- '.escapeshellarg($filename);