aboutsummaryrefslogtreecommitdiff
path: root/ratatoeskr/backend/main.php
blob: cd7bb3523b10cd6ba87b63146a8cd0272a969910 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/*
 * File: ratatoeskr/backend/main.php
 * Main file for the backend.
 * 
 * License:
 * This file is part of Ratatöskr.
 * Ratatöskr is licensed unter the MIT / X11 License.
 * See "ratatoeskr/licenses/ratatoeskr" for more information.
 */

require_once(dirname(__FILE__) . "/../sys/models.php");
require_once(dirname(__FILE__) . "/../sys/pwhash.php");

$backend_subactions = url_action_subactions(array(
	"_default" => url_action_alias(array("login")),
	"_prelude" => function(&$data, $url_now, &$url_next)
	{
		global $ratatoeskr_settings;
		/* Check authentification */
		if(isset($_SESSION["uid"]))
		{
			try
			{
				$user = User::by_id($_SESSION["uid"]);
				if($user->pwhash == $_SESSION["pwhash"])
				{
					if(empty($user->language))
					{
						$user->language = $ratatoeskr_settings["default_language"];
						$user->save();
					}
					load_language($user->language);
					
					if($url_next[0] == "login")
						$url_next = array("content", "write");
					return; /* Authentification successful, continue  */
				}
				else
					unset($_SESSION["uid"]);
			}
			catch(DoesNotExistError $e)
			{
				unset($_SESSION["uid"]);
			}
		}
		load_language();
		/* If we are here, user is not logged in... */
		$url_next = array("login");
	},
	"index" => url_action_alias(array("login")),
	"login" => url_action_simple(function($data)
	{
		global $ste;
		if(!empty($_POST["user"]))
		{
			try
			{
				$user = User::by_name($_POST["user"]);
				if(!PasswordHash::validate($_POST["password"], $user->pwhash))
					throw new Exception();
				$_SESSION["uid"]    = $user->get_id();
				$_SESSION["pwhash"] = $user->pwhash;
			}
			catch(Exception $e)
			{
				$ste->vars["login_failed"] = True;
			}
			
			/* Login successful. Now redirect... */
			throw new Redirect(array("content", "write"));
		}
		
		echo $ste->exectemplate("systemtemplates/backend_login.html");
	}),
	"content" => url_action_simple(function($data)
	{
		print "hi";
	})
));

?>