♻️ Port login
This commit is contained in:
parent
b7d7c4498e
commit
24b7226086
9 changed files with 74 additions and 71 deletions
21
controllers/site/login.php
Normal file
21
controllers/site/login.php
Normal 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("/");
|
||||
}
|
7
controllers/site/logout.php
Normal file
7
controllers/site/logout.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
function index() {
|
||||
global $router;
|
||||
setcookie("dkgame", "", time()-100000, "/", "", 0);
|
||||
$router->redirect('/site/login');
|
||||
}
|
|
@ -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"]);
|
||||
|
||||
|
|
|
@ -12,4 +12,26 @@ $router->registerNamespace('user', 1, false);
|
|||
$router->registerNamespace('game', 1, true);
|
||||
$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();
|
||||
|
|
|
@ -24,7 +24,7 @@ class NamespaceHandler {
|
|||
}
|
||||
|
||||
public function canShow() {
|
||||
// FIXME: handle auth level correctly
|
||||
return $this->authLevel < 1000;
|
||||
global $authLevel;
|
||||
return $this->authLevel <= $authLevel;
|
||||
}
|
||||
}
|
47
login.php
47
login.php
|
@ -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();
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -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>
|
||||
|
|
13
theme/default/site/login.twig
Normal file
13
theme/default/site/login.twig
Normal 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 %}
|
5
theme/default/site/page.twig
Normal file
5
theme/default/site/page.twig
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% extends "base.twig" %}
|
||||
|
||||
{% block content %}
|
||||
{{ content }}
|
||||
{% endblock %}
|
Loading…
Add table
Reference in a new issue