thumb: indicate 1 month caching of generated output
[minimedit.git] / auth.inc.php
index c8b6b319c74a347538456392a47cc093bdc143d7..4d9b29e2a297f00e05184cdb954e54c802d1c958 100644 (file)
@@ -5,6 +5,9 @@ class User
 {
        function __construct($dir)
        {
+               if (!file_exists($dir)) {
+                       throw new Exception("Gebruiker niet gevonden in $dir");
+               }
                $this->dir = $dir;
                $this->login = basename($dir);
        }
@@ -14,9 +17,24 @@ class User
                return $this->$col = $this->$col();  # run method and cache
        }
 
+       function rawname()
+       {
+               return rtrim(@file_get_contents("{$this->dir}/name.txt"));
+       }
+
        function name()
        {
-               return @file_get_contents("{$this->dir}/name.txt");
+               return htmlspecialchars(implode(' & ', explode("\n", $this->rawname)));
+       }
+
+       function html()
+       {
+               return $this->name ?: $this->login;
+       }
+
+       function email()
+       {
+               return rtrim(@file_get_contents("{$this->dir}/email.txt"));
        }
 
        function admin()
@@ -28,6 +46,14 @@ class User
        {
                return @filemtime("{$this->dir}/last.log");
        }
+
+       function logclient()
+       {
+               if ($log = @fopen("{$this->dir}/last.log", 'w')) {
+                       $line = $_SERVER['REMOTE_ADDR'].' '.$_SERVER['HTTP_USER_AGENT'];
+                       fwrite($log, $line."\n");
+               }
+       }
 }
 
 function login_password_verify($input, $test)
@@ -42,7 +68,7 @@ function login_password_verify($input, $test)
 function login_setcookie()
 {
        global $User;
-       return setcookie('login', $User['auth'], 0, '/');
+       return setcookie('login', $User->auth, 0, '/');
 }
 
 function login($inuser, $inpass = NULL)
@@ -70,17 +96,11 @@ function login($inuser, $inpass = NULL)
 
        if (function_exists('apache_note')) apache_note('user', $inuser);
 
-       if ($log = @fopen("$userdir/last.log", 'w')) {
-               fwrite($log, "{$_SERVER['REMOTE_ADDR']} {$_SERVER['HTTP_USER_AGENT']}\n");
-       }
-
-       return [
-               'name'  => $inuser,
-               'dir'   => $userdir,
-               'admin' => file_exists("$userdir/.admin"),
-               'pass'  => $usertest,
-               'auth'  => "$inuser:$authhash",
-       ];
+       $user = new User($userdir);
+       $user->logclient();
+       $user->pass = $usertest;
+       $user->auth = "$inuser:$authhash";
+       return $user;
 }
 
 if (isset($_COOKIE['login'])) {