login works, but talking via tokens not ready
This commit is contained in:
@@ -14,6 +14,7 @@ use Symfony\Component\Routing\RequestContext;
|
|||||||
use Symfony\Component\Routing\Matcher\UrlMatcher;
|
use Symfony\Component\Routing\Matcher\UrlMatcher;
|
||||||
use ComCen\Http\LoginController;
|
use ComCen\Http\LoginController;
|
||||||
use ComCen\Http\RegisterController;
|
use ComCen\Http\RegisterController;
|
||||||
|
use ComCen\Database\Handler;
|
||||||
|
|
||||||
class WebSocketServer implements MessageComponentInterface
|
class WebSocketServer implements MessageComponentInterface
|
||||||
{
|
{
|
||||||
@@ -69,6 +70,7 @@ $server = IoServer::factory(
|
|||||||
"0.0.0.0"
|
"0.0.0.0"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Handler::getInstance()->init();
|
||||||
echo "Server running on http://localhost:8080\n";
|
echo "Server running on http://localhost:8080\n";
|
||||||
|
|
||||||
$server->run();
|
$server->run();
|
||||||
@@ -16,22 +16,23 @@ class TokenHandler
|
|||||||
}
|
}
|
||||||
public static function doesUserHaveToken(string $username): bool
|
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
|
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) {
|
if (self::$iterations >= 99999) {
|
||||||
self::$iterations = 0;
|
self::$iterations = 0;
|
||||||
}
|
}
|
||||||
self::$tokens[] = [$username, (microtime(true) * 1000), $tokenBody];
|
$timestamp = microtime(true) * 10000;
|
||||||
return self::$tokens[][0] . $tokenBody;
|
self::$tokens[] = [$username, $timestamp, $tokenBody];
|
||||||
|
return $timestamp . $tokenBody;
|
||||||
}
|
}
|
||||||
public static function getTokenOwnership(string $controlledToken): string | null
|
public static function getTokenOwnership(string $controlledToken): string | null
|
||||||
{
|
{
|
||||||
for ($i = 0; $i < count(self::$tokens); ++$i) {
|
for ($i = 0; $i < count(self::$tokens); ++$i) {
|
||||||
$token = self::$tokens[$i];
|
$token = self::$tokens[$i];
|
||||||
if ($token[0] === $controlledToken[1] . $controlledToken[2]) {
|
if ($token[1] . $token[2] === $controlledToken) {
|
||||||
return $token[0];
|
return $token[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -42,12 +43,12 @@ class TokenHandler
|
|||||||
for ($i = 0; $i < count(self::$tokens); ++$i) {
|
for ($i = 0; $i < count(self::$tokens); ++$i) {
|
||||||
$token = self::$tokens[$i];
|
$token = self::$tokens[$i];
|
||||||
// 1 hour
|
// 1 hour
|
||||||
if (time() - ($token[0] / 1000) > 3600) {
|
if (time() - ($token[1] / 10000) > 3600) {
|
||||||
array_splice(self::$tokens, $i, 1);
|
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) {
|
for ($i = 0; $i < count(self::$tokens); ++$i) {
|
||||||
if (self::$tokens[$i][0] === $user) {
|
if (self::$tokens[$i][0] === $user) {
|
||||||
|
|||||||
Reference in New Issue
Block a user