login: indicate failure in http status codes
[minimedit.git] / login / index.php
1 <?php
2 $message = NULL;
3
4 if (isset($_POST['mail'])) {
5         $input = trim($_POST['mail']);
6         $inputq = sprintf('<em>%s</em>', $input);
7         try {
8                 require_once 'login/mailpass.inc.php';
9                 if ( $found = mailtoken($input) ) {
10                         $message = "Er is een e-mail verstuurd naar $inputq.";
11                 }
12                 else {
13                         http_response_code(404);
14                         $message = "E-mailadres $inputq is nergens ingesteld.";
15                 }
16         }
17         catch (Exception $e) {
18                 http_response_code(500);
19                 $message = "E-mail kon niet verstuurd worden."
20                         . " Probeer het later nog eens of neem contact op.";
21         }
22 }
23 elseif (isset($_POST['login'])) {
24         if ($User = login($_POST['login'], $_POST['pass'])) {
25                 login_setcookie();
26         }
27         else {
28                 http_response_code(403);
29                 $message = 'Ongeldige gebruikersnaam of wachtwoord.';
30         }
31 }
32 elseif (isset($_GET['logout'])) {
33         setcookie('login', '', time(), '/'); # expire immediately
34         $User = NULL;
35         $message = "Je bent uitgelogd. Graag tot ziens!";
36 }
37
38 if (empty($User)) {
39         ob_clean();
40         require_once 'login/form.inc.php';
41         $Place['warn'] = $message;
42         return TRUE;
43 }
44
45 if (isset($_GET['goto'])) {
46         ob_clean();
47         $target = ltrim($_GET['goto'], '/');
48         header("Location: /$target");
49         http_response_code(302);
50         exit;
51 }
52
53 if (empty($Args) and !empty($User['admin'])) {
54         include_once 'login/admin.html';
55 }
56