login register token logic is ready. Fixed also some syntax bugs

This commit is contained in:
GitProtogen
2026-03-06 10:28:01 +01:00
parent 4b30283697
commit d51eedd7bd
5 changed files with 32 additions and 14 deletions
+8
View File
@@ -9,6 +9,14 @@ class Handler
private static ?Handler $instance = null; private static ?Handler $instance = null;
private PDO $pdo; private PDO $pdo;
public static function getInstance(): static
{
if (self::$instance === null) {
self::$instance = new static();
}
return self::$instance;
}
private function __construct() private function __construct()
{ {
$this->pdo = new PDO('sqlite:' . __DIR__ . '/../../storage/database.sqlite'); $this->pdo = new PDO('sqlite:' . __DIR__ . '/../../storage/database.sqlite');
+10 -8
View File
@@ -3,6 +3,7 @@
namespace ComCen\Http; namespace ComCen\Http;
use ComCen\Database\Handler; use ComCen\Database\Handler;
use ComCen\Security\TokenHandler;
use Ratchet\ConnectionInterface; use Ratchet\ConnectionInterface;
use Ratchet\Http\HttpServerInterface; use Ratchet\Http\HttpServerInterface;
use Psr\Http\Message\RequestInterface; use Psr\Http\Message\RequestInterface;
@@ -26,24 +27,25 @@ class LoginController implements HttpServerInterface
$responseHead = "400"; $responseHead = "400";
$json = json_encode(["error" => "Not enough params"]); $json = json_encode(["error" => "Not enough params"]);
} }
else if (!Handler::class->userExists($username) == !password_verify($password, Handler::class->getPasswordHash($username))) else if (!Handler::getInstance()->userExists($username) == !password_verify($password, Handler::getInstance()->getPasswordHash($username)))
{ {
$login = false; $login = false;
$responseHead = "400"; $responseHead = "409";
$json = json_encode(["error" => "Bad"]); $json = json_encode(["error" => "Bad"]);
} }
if (!$login) if (!$login) {
{ Utils::responeJson($conn, $responseHead, $json);
Utils::class->responeJson($conn, $responseHead, $json);
$conn->close(); $conn->close();
return; return;
} }
Handler::class->addUser($username, $password); if (TokenHandler::doesUserHaveToken($username)) {
TokenHandler::deleteTokensForUser($username);
}
$json = json_encode(["error" => "none"]); $json = json_encode(["token" => TokenHandler::getNewTokenForUser($username)]);
Utils::class->responeJson($conn, "200", $json); Utils::responeJson($conn, "200", $json);
$conn->close(); $conn->close();
} }
+5 -5
View File
@@ -26,13 +26,13 @@ class RegisterController implements HttpServerInterface
$responseHead = "400"; $responseHead = "400";
$json = json_encode(["error" => "Not enough params"]); $json = json_encode(["error" => "Not enough params"]);
} }
else if (count($password) < 5) else if (strlen($password) < 5)
{ {
$createAccount = false; $createAccount = false;
$responseHead = "400"; $responseHead = "400";
$json = json_encode(["error" => "Short password"]); $json = json_encode(["error" => "Short password"]);
} }
else if (Handler::class->userExists($username)) else if (Handler::getInstance()->userExists($username))
{ {
$createAccount = false; $createAccount = false;
$responseHead = "409"; $responseHead = "409";
@@ -41,15 +41,15 @@ class RegisterController implements HttpServerInterface
if (!$createAccount) if (!$createAccount)
{ {
Utils::class->responeJson($conn, $responseHead, $json); Utils::responeJson($conn, $responseHead, $json);
$conn->close(); $conn->close();
return; return;
} }
Handler::class->addUser($username, $password); Handler::getInstance()->addUser($username, $password);
$json = json_encode(["error" => "none"]); $json = json_encode(["error" => "none"]);
Utils::class->responeJson($conn, "200", $json); Utils::responeJson($conn, "200", $json);
$conn->close(); $conn->close();
} }
+1 -1
View File
@@ -6,7 +6,7 @@ use Ratchet\ConnectionInterface;
class Utils class Utils
{ {
function responeJson(ConnectionInterface $conn, string $head, string $jsonData): void static function responeJson(ConnectionInterface $conn, string $head, string $jsonData): void
{ {
$conn->send("HTTP/1.1 {$head}\r\nContent-Type: application/json\r\n\r\n{$jsonData}"); $conn->send("HTTP/1.1 {$head}\r\nContent-Type: application/json\r\n\r\n{$jsonData}");
} }
+8
View File
@@ -47,4 +47,12 @@ class TokenHandler
} }
} }
} }
public static function deleteTokensForUser(string $user)
{
for ($i = 0; $i < count(self::$tokens); ++$i) {
if (self::$tokens[$i][0] === $user) {
array_splice(self::$tokens, $i, 1);
}
}
}
} }