login: derive user permissions from .admin file
[minimedit.git] / auth.inc.php
1 <?php
2 function login($inuser, $inpass = NULL)
3 {
4         if (empty($inuser)) return;
5         if (!isset($inpass)) {
6                 @list ($inuser, $inauth) = explode(':', $inuser, 2);
7         }
8
9         # find password data by user name
10         $userdir = 'login/'.strtolower($inuser);
11         $pwfile = "$userdir/.passwd";
12         if (!file_exists($pwfile)) return;
13         $usertest = trim(file_get_contents($pwfile));
14         if (!$usertest) return;
15
16         # verify password
17         $authhash = md5($usertest);
18         if (isset($inpass)) {
19                 if (!password_verify($inpass, $usertest)) return;
20         }
21         else {
22                 if ($inauth !== $authhash) return;
23         }
24
25         if (function_exists('apache_note')) apache_note('user', $inuser);
26
27         return [
28                 'name'  => $inuser,
29                 'admin' => file_exists("$userdir/.admin"),
30                 'auth'  => "$inuser:$authhash",
31         ];
32 }
33
34 if (isset($_COOKIE['login'])) {
35         global $User;
36         $User = login($_COOKIE['login']);
37 }
38