diff --git a/controllers/site/login.php b/controllers/site/login.php new file mode 100644 index 0000000..8f38ffa --- /dev/null +++ b/controllers/site/login.php @@ -0,0 +1,21 @@ +display('login'); +} + +function index_post() { + global $renderer; + global $router; + // TODO: change the password encryption method + $query = doquery("SELECT * FROM {{table}} WHERE username='".$_POST["username"]."' AND password='".md5($_POST["password"])."' LIMIT 1", "users"); + if (mysqli_num_rows($query) != 1) { + $renderer->simple("Connexion error", "Invalid username or password. Please go back and try again."); + } + $row = mysqli_fetch_array($query); + if (isset($_POST["rememberme"])) { $expiretime = time()+31536000; $rememberme = 1; } else { $expiretime = 0; $rememberme = 0; } + $cookie = $row["id"] . " " . $row["username"] . " " . md5($row["password"] . "--" . $dbsettings["secretword"]) . " " . $rememberme; + setcookie("dkgame", $cookie, $expiretime, "/", "", 0); + $router->redirect("/"); +} \ No newline at end of file diff --git a/controllers/site/logout.php b/controllers/site/logout.php new file mode 100644 index 0000000..88fefdb --- /dev/null +++ b/controllers/site/logout.php @@ -0,0 +1,7 @@ +redirect('/site/login'); +} \ No newline at end of file diff --git a/kernel/boot/site.php b/kernel/boot/site.php index 8e9d81b..80df5bb 100644 --- a/kernel/boot/site.php +++ b/kernel/boot/site.php @@ -1,23 +1,5 @@ registerNamespace('admin', 2, false); $router->registerNamespace('user', 1, false); $router->registerNamespace('game', 1, true); -$router->registerNamespace('site', 0, false); +$router->registerNamespace('site', 0, false); + +// Close game. +if ($controlrow["gameopen"] == 0) { + $renderer->simple("Game Closed", "The game is currently closed for maintanence. Please check back later."); +} + +$userrow = checkcookies(); +$authLevel = 0; + +if ($userrow != false) { + $authLevel = 1; + $renderer->prepare("isConnected", true); + // Force verify if the user isn't verified yet. + if ($controlrow["verifyemail"] == 1 && $userrow["verify"] != 1) { + $router->redirect("/users/verify"); + } + // Block user if they have been banned. + if ($userrow["authlevel"] == -1) { + $renderer->simple("Blocked account", "Your account has been blocked or banned. Please try back later."); + } +} + $router->loadController(); diff --git a/kernel/namespace.php b/kernel/namespace.php index cea0d67..6847a3c 100644 --- a/kernel/namespace.php +++ b/kernel/namespace.php @@ -24,7 +24,7 @@ class NamespaceHandler { } public function canShow() { - // FIXME: handle auth level correctly - return $this->authLevel < 1000; + global $authLevel; + return $this->authLevel <= $authLevel; } } \ No newline at end of file diff --git a/login.php b/login.php deleted file mode 100644 index fcd5788..0000000 --- a/login.php +++ /dev/null @@ -1,47 +0,0 @@ - \ No newline at end of file diff --git a/theme/default/base.twig b/theme/default/base.twig index f585936..9f625ad 100644 --- a/theme/default/base.twig +++ b/theme/default/base.twig @@ -14,11 +14,11 @@