diff --git a/bin/WebSocketServer.php b/bin/WebSocketServer.php index ea68ee9..4d574a7 100644 --- a/bin/WebSocketServer.php +++ b/bin/WebSocketServer.php @@ -14,6 +14,7 @@ use Symfony\Component\Routing\RequestContext; use Symfony\Component\Routing\Matcher\UrlMatcher; use ComCen\Http\LoginController; use ComCen\Http\RegisterController; +use ComCen\Database\Handler; class WebSocketServer implements MessageComponentInterface { @@ -69,6 +70,7 @@ $server = IoServer::factory( "0.0.0.0" ); +Handler::getInstance()->init(); echo "Server running on http://localhost:8080\n"; $server->run(); \ No newline at end of file diff --git a/src/Security/TokenHandler.php b/src/Security/TokenHandler.php index a0d0bc7..9c93405 100644 --- a/src/Security/TokenHandler.php +++ b/src/Security/TokenHandler.php @@ -16,22 +16,23 @@ class TokenHandler } public static function doesUserHaveToken(string $username): bool { - return array_any(self::$tokens, fn($token) => $token['username'] === $username); + return array_any(self::$tokens, fn($token) => $token[0] === $username); } public static function getNewTokenForUser(string $username): string { - $tokenBody = self::random32Characters() . str_pad(self::$iterations, 5, '0'); + $tokenBody = self::random32Characters() . str_pad(self::$iterations++, 5, '0'); if (self::$iterations >= 99999) { self::$iterations = 0; } - self::$tokens[] = [$username, (microtime(true) * 1000), $tokenBody]; - return self::$tokens[][0] . $tokenBody; + $timestamp = microtime(true) * 10000; + self::$tokens[] = [$username, $timestamp, $tokenBody]; + return $timestamp . $tokenBody; } public static function getTokenOwnership(string $controlledToken): string | null { for ($i = 0; $i < count(self::$tokens); ++$i) { $token = self::$tokens[$i]; - if ($token[0] === $controlledToken[1] . $controlledToken[2]) { + if ($token[1] . $token[2] === $controlledToken) { return $token[0]; } } @@ -42,12 +43,12 @@ class TokenHandler for ($i = 0; $i < count(self::$tokens); ++$i) { $token = self::$tokens[$i]; // 1 hour - if (time() - ($token[0] / 1000) > 3600) { + if (time() - ($token[1] / 10000) > 3600) { array_splice(self::$tokens, $i, 1); } } } - public static function deleteTokensForUser(string $user) + public static function deleteTokensForUser(string $user): void { for ($i = 0; $i < count(self::$tokens); ++$i) { if (self::$tokens[$i][0] === $user) {