login/pass: error messages below page title
[minimedit.git] / auth.inc.php
index aceb2de076c3481dc53a61c24e4444f88c866a2d..34c83db0c9bd9d5952b7b023878a7d915f07ba53 100644 (file)
@@ -3,13 +3,18 @@ date_default_timezone_set('Europe/Amsterdam');
 
 class User
 {
-       function __construct($dir, $existing = TRUE)
+       public $dir, $login;
+
+       function __construct($dir = NULL, $existing = TRUE)
        {
+               if (empty($dir)) {
+                       return;
+               }
                if (!file_exists($dir) and $existing) {
                        throw new Exception("Gebruiker niet gevonden in $dir");
                }
                $this->dir = $dir;
-               $this->login = basename($dir);
+               $this->login = preg_replace('{.*/}', '', $dir);
        }
 
        function __get($col)
@@ -29,7 +34,11 @@ class User
 
        function html()
        {
-               return $this->name ?: $this->login;
+               $name = htmlspecialchars($this->login);
+               if ($this->name and $this->name != $name) {
+                       $name = "{$this->name}<small> @$name</small>";
+               }
+               return $name;
        }
 
        function email()
@@ -51,7 +60,7 @@ class User
                        }
                        return isset($this->admin[$permission]);  # check level
                }
-               if (!@file_exists("{$this->dir}/.admin")) {
+               if (!$this->dir or !@file_exists("{$this->dir}/.admin")) {
                        return FALSE;  # not an admin
                }
                return array_fill_keys(explode("\n", file_get_contents("{$this->dir}/.admin")), TRUE);
@@ -118,8 +127,11 @@ function login($inuser, $inpass = NULL)
        return $user;
 }
 
+global $User;
 if (isset($_COOKIE['login'])) {
-       global $User;
        $User = login($_COOKIE['login']);
 }
+if (!$User) {
+       $User = new User;
+}