♻️ Port login

This commit is contained in:
Kazhnuz 2025-03-29 10:45:47 +01:00
parent b7d7c4498e
commit 24b7226086
9 changed files with 74 additions and 71 deletions

View file

@ -0,0 +1,21 @@
<?php
function index() {
global $renderer;
$renderer->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("/");
}

View file

@ -0,0 +1,7 @@
<?php
function index() {
global $router;
setcookie("dkgame", "", time()-100000, "/", "", 0);
$router->redirect('/site/login');
}

View file

@ -1,23 +1,5 @@
<?php // Functions relative to the site
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
$controlrow = mysqli_fetch_array($controlquery);
// Login (or verify) if not logged in.
$userrow = checkcookies();
if ($userrow == false) {
if (isset($_GET["do"])) {
if ($_GET["do"] == "verify") { header("Location: users.php?do=verify"); die(); }
}
header("Location: login.php?do=login"); die();
}
// Close game.
if ($controlrow["gameopen"] == 0) { display("The game is currently closed for maintanence. Please check back later.","Game Closed"); die(); }
// Force verify if the user isn't verified yet.
if ($controlrow["verifyemail"] == 1 && $userrow["verify"] != 1) { header("Location: users.php?do=verify"); die(); }
// Block user if he/she has been banned.
if ($userrow["authlevel"] == 2) { die("Your account has been blocked. Please try back later."); }
if (isset($_GET["do"])) {
$do = explode(":",$_GET["do"]);

View file

@ -10,6 +10,28 @@ $renderer = new Renderer();
$router->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();

View file

@ -24,7 +24,7 @@ class NamespaceHandler {
}
public function canShow() {
// FIXME: handle auth level correctly
return $this->authLevel < 1000;
global $authLevel;
return $this->authLevel <= $authLevel;
}
}

View file

@ -1,47 +0,0 @@
<?php // login.php :: Handles logins and cookies.
// TODO: remove when porting to real boot files
define('DS', DIRECTORY_SEPARATOR);
define('PATH_ROOT', __DIR__.DS);
define('PATH_BOOT', PATH_ROOT.'kernel'.DS.'boot'.DS);
include('kernel/lib.php');
if (isset($_GET["do"])) {
if ($_GET["do"] == "login") { login(); }
elseif ($_GET["do"] == "logout") { logout(); }
}
function login() {
include('config.php');
$link = opendb();
if (isset($_POST["submit"])) {
$query = doquery("SELECT * FROM {{table}} WHERE username='".$_POST["username"]."' AND password='".md5($_POST["password"])."' LIMIT 1", "users");
if (mysqli_num_rows($query) != 1) { die("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);
header("Location: index.php");
die();
}
$page = gettemplate("login");
$title = "Log In";
display($page, $title, false, false, false, false);
}
function logout() {
setcookie("dkgame", "", time()-100000, "/", "", 0);
header("Location: login.php?do=login");
die();
}
?>

View file

@ -14,11 +14,11 @@
<td><img src="{{ STYLE_FOLDER }}assets/img/logo.gif" alt="{{dkgamename}}" title="{{dkgamename}}" border="0" /></td>
<td style="text-align:right; vertical-align:middle;">
{% if isConnected %}
<a href="/login.php?do=logout"><img src="{{ STYLE_FOLDER }}assets/img/button_logout.gif" alt="Log Out" border="0" /></a>
<a href="/site/logout"><img src="{{ STYLE_FOLDER }}assets/img/button_logout.gif" alt="Log Out" border="0" /></a>
{% else %}
<a href="/login.php?do=login"><img src="{{ STYLE_FOLDER }}assets/img/button_login.gif" alt="Log In" border="0" /></a>
<a href="/site/login"><img src="{{ STYLE_FOLDER }}assets/img/button_login.gif" alt="Log In" border="0" /></a>
{% endif %}
<a href="/help.php"><img src="{{ STYLE_FOLDER }}assets/img/button_help.gif" alt="Help" border="0" /></a>
<a href="/site/help"><img src="{{ STYLE_FOLDER }}assets/img/button_help.gif" alt="Help" border="0" /></a>
</td>
</tr></table>
</td></tr>

View file

@ -0,0 +1,13 @@
{% extends "base.twig" %}
{% block content %}
<form action="/site/login" method="post">
<table width="75%">
<tr><td width="30%">Username:</td><td><input type="text" size="30" name="username" /></td></tr>
<tr><td>Password:</td><td><input type="password" size="30" name="password" /></td></tr>
<tr><td>Remember me?</td><td><input type="checkbox" name="rememberme" value="yes" /> Yes</td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="Log In" /></td></tr>
<tr><td colspan="2">Checking the "Remember Me" option will store your login information in a cookie so you don't have to enter it next time you get online.<br /><br />Want to play? You gotta <a href="users.php?do=register">register your own character.</a><br /><br />You may also <a href="users.php?do=changepassword">change your password</a>, or <a href="users.php?do=lostpassword">request a new one</a> if you've lost yours.</td></tr>
</table>
</form>
{% endblock %}

View file

@ -0,0 +1,5 @@
{% extends "base.twig" %}
{% block content %}
{{ content }}
{% endblock %}