login register token logic is ready. Fixed also some syntax bugs
This commit is contained in:
@@ -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');
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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}");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user