auth: create user object regardless of login
[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 (!$User or !$User->login) {
39         $Article->title = 'Inloggen';
40         if (isset($_REQUEST['goto'])) {
41                 $target = ltrim($_REQUEST['goto'], '/');
42                 $target = new ArchiveArticle("$target.html");
43
44                 if ($Page = $target->handler and $target->handler == 'melding') {
45                         $caller = $Article;
46                         $Article = $target;
47                         $Args = $target->path;
48                         ob_start();
49                         include "./{$target->handler}/index.php";
50                         ob_end_clean();
51                         $Article = $caller;
52                 }
53
54                 if ($target->title) {
55                         $Article->title .= ' voor ' . $target->title;
56                 }
57                 if ($target->image) {
58                         $Article->image = $target->image;
59                 }
60         }
61         ob_start();
62         require_once 'login/form.inc.php';
63         $Article->raw = ob_get_clean();
64         $Place['warn'] = $message;
65         return TRUE;
66 }
67
68 if (isset($_REQUEST['goto'])) {
69         $target = ltrim($_REQUEST['goto'], '/');
70         header("Location: /$target");
71         http_response_code(302);
72         exit;
73 }
74
75 if (isset($Article->raw)) {
76         print $Article->raw;
77 }
78 if (empty($Args) and $User->admin) {
79         include_once 'login/admin.html';
80 }
81
82 return;