This commit is contained in:
GitProtogen
2026-03-06 08:24:04 +01:00
parent acafa80454
commit 4b30283697
3 changed files with 29 additions and 11 deletions
+22 -9
View File
@@ -14,24 +14,37 @@ class TokenHandler
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
return bin2hex($data);
}
public static function doesUserHaveToken(string $username): bool
{
foreach (self::$tokens as $token) {
if ($token['username'] === $username) {
return true;
}
}
return false;
return array_any(self::$tokens, fn($token) => $token['username'] === $username);
}
public static function getNewTokenForUser(string $username): string
{
$tokenBody = self::random32Characters() . str_pad(self::$iterations, 5, '0', STR_PAD_RIGHT);
$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;
}
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]) {
return $token[0];
}
}
return null;
}
public static function deleteOldTokens(): void
{
for ($i = 0; $i < count(self::$tokens); ++$i) {
$token = self::$tokens[$i];
// 1 hour
if (time() - ($token[0] / 1000) > 3600) {
array_splice(self::$tokens, $i, 1);
}
}
}
}